<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>VLOOK 快速参考手册</title><style type='text/css'>html {overflow-x: initial !important;}:root { --node-fill:  #ECECFF; --node-border:  #CCCCFF; --note-fill:  #fff5ad; --note-border:  #aaaa33; --cluster-fill:  #ffffde  !important; --cluster-border:  #aaaa33  !important; }
.mermaid .label { color: var(--text-color); }
.node rect, .node circle, .node ellipse, .node polygon { fill: var(--node-fill); stroke: var(--node-border); stroke-width: 1px; }
.edgePath .path { stroke: var(--text-color); }
.edgeLabel { background-color: var(--bg-color); }
.cluster rect { fill: rgb(255, 255, 222) !important; rx: 4px !important; stroke: rgb(170, 170, 51) !important; stroke-width: 1px !important; }
.cluster text { fill: var(--text-color); }
.actor { stroke: var(--node-border); fill: var(--node-fill); }
text.actor { fill: var(--text-color); stroke: none; }
.actor-line { stroke: grey; }
.messageLine0 { stroke-width: 1.5px; stroke: var(--text-color); }
.messageLine1 { stroke-width: 1.5px; stroke: var(--text-color); }
#arrowhead { fill: var(--text-color); }
#crosshead path { fill: var(--text-color)  !important; stroke: var(--text-color)  !important; }
.messageText { fill: var(--text-color); stroke: none; }
.labelBox { stroke: var(--node-border); fill: var(--node-fill); }
.labelText { fill: var(--text-color); stroke: none; }
.loopText { fill: var(--text-color); stroke: none; }
.loopLine { stroke-width: 2px; stroke: var(--node-border); }
.note { stroke: var(--note-border); fill: var(--note-fill); }
.noteText { fill: var(--text-color); stroke: none; font-size: 14px; }
.section { stroke: none; opacity: 0.2; }
.section0 { fill: rgba(102, 102, 255, 0.490196); }
.section2 { fill: rgb(255, 244, 0); }
.section1, .section3 { fill: white; opacity: 0.2; }
.sectionTitle0 { fill: var(--text-color); }
.sectionTitle1 { fill: var(--text-color); }
.sectionTitle2 { fill: var(--text-color); }
.sectionTitle3 { fill: var(--text-color); }
.sectionTitle { text-anchor: start; font-size: 11px; }
.grid .tick { stroke: lightgrey; opacity: 0.3; shape-rendering: crispedges; }
.grid path { stroke-width: 0px; }
.today { fill: none; stroke: red; stroke-width: 2px; }
.task { stroke-width: 2px; }
.taskText { text-anchor: middle; font-size: 11px; }
.taskTextOutsideRight { fill: black; text-anchor: start; font-size: 11px; }
.taskTextOutsideLeft { fill: black; text-anchor: end; font-size: 11px; }
.taskText0, .taskText1, .taskText2, .taskText3 { fill: white; }
.task0, .task1, .task2, .task3 { fill: rgb(138, 144, 221); stroke: rgb(83, 79, 188); }
.taskTextOutside0, .taskTextOutside2 { fill: var(--text-color); }
.taskTextOutside1, .taskTextOutside3 { fill: var(--text-color); }
.active0, .active1, .active2, .active3 { fill: rgb(191, 199, 255); stroke: rgb(83, 79, 188); }
.activeText0, .activeText1, .activeText2, .activeText3 { fill: black !important; }
.done0, .done1, .done2, .done3 { stroke: grey; fill: lightgrey; stroke-width: 2px; }
.doneText0, .doneText1, .doneText2, .doneText3 { fill: black !important; }
.crit0, .crit1, .crit2, .crit3 { stroke: rgb(255, 136, 136); fill: red; stroke-width: 2px; }
.activeCrit0, .activeCrit1, .activeCrit2, .activeCrit3 { stroke: rgb(255, 136, 136); fill: rgb(191, 199, 255); stroke-width: 2px; }
.doneCrit0, .doneCrit1, .doneCrit2, .doneCrit3 { stroke: rgb(255, 136, 136); fill: lightgrey; stroke-width: 2px; cursor: pointer; shape-rendering: crispedges; }
.doneCritText0, .doneCritText1, .doneCritText2, .doneCritText3 { fill: black !important; }
.activeCritText0, .activeCritText1, .activeCritText2, .activeCritText3 { fill: black !important; }
.titleText { text-anchor: middle; font-size: 18px; fill: black; }
.node text { font-size: 14px; }
div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-size: 12px; background-color: rgb(255, 255, 222); border: 1px solid rgb(170, 170, 51); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; pointer-events: none; z-index: 100; background-position: initial initial; background-repeat: initial initial; }
#write .md-diagram-panel .md-diagram-panel-preview div { }


:root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #B5D6FC; --select-text-font-color: auto; --monospace: "Lucida Console",Consolas,"Courier",monospace; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857143; overflow-x: hidden; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; tab-size: 4; background-position: inherit inherit; background-repeat: inherit inherit; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; word-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
@media screen and (max-width: 500px) { 
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
  .CodeMirror-sizer { margin-left: 0px !important; }
  .CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; }
button, input, select, textarea { color: inherit; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 2; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.701961); color: rgb(85, 85, 85); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px !important; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right-width: 0px; background-color: inherit; }
.CodeMirror-linenumber { }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; position: relative !important; background-position: inherit inherit; background-repeat: inherit inherit; }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; background-position: 0px 0px; background-repeat: initial initial; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print { 
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; }
  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  html.blink-to-pdf { font-size: 13px; }
  .typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid; }
  .typora-export #write::after { height: 0px; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background-color: rgb(204, 204, 204); display: block; overflow-x: hidden; background-position: initial initial; background-repeat: initial initial; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
[contenteditable="true"]:active, [contenteditable="true"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) { 
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background-color: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; background-position: initial initial; background-repeat: initial initial; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
code { text-align: left; }
a.md-print-anchor { white-space: pre !important; border: none !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; text-shadow: initial !important; background-position: 0px 0px !important; background-repeat: initial initial !important; }
.md-inline-math .MathJax_SVG .noError { display: none !important; }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
.MathJax_SVG * { transition: none; }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="mermaid"] svg, [lang="flow"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom-width: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
svg[id^="mermaidChart"] { line-height: 1em; }


.CodeMirror { height: auto; }
.CodeMirror.cm-s-inner { background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; background-position: inherit inherit; background-repeat: inherit inherit; }
.CodeMirror-scroll { overflow-y: hidden; overflow-x: auto; z-index: 3; }
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
.CodeMirror-gutters { border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; white-space: nowrap; background-position: inherit inherit; background-repeat: inherit inherit; }
.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
.cm-s-inner .cm-number { color: rgb(17, 102, 68); }
.cm-s-inner .cm-def { color: rgb(0, 0, 255); }
.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
.cm-s-inner .cm-string { color: rgb(170, 17, 17); }
.cm-s-inner .cm-property { color: rgb(0, 0, 0); }
.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
.cm-negative { color: rgb(221, 68, 68); }
.cm-positive { color: rgb(34, 153, 34); }
.cm-header, .cm-strong { font-weight: 700; }
.cm-del { text-decoration: line-through; }
.cm-em { font-style: italic; }
.cm-link { text-decoration: underline; }
.cm-error { color: red; }
.cm-invalidchar { color: red; }
.cm-constant { color: rgb(38, 139, 210); }
.cm-defined { color: rgb(181, 137, 0); }
div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
.cm-s-inner .CodeMirror-activeline-background { background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; background-position: inherit inherit; background-repeat: inherit inherit; }
.CodeMirror { position: relative; overflow: hidden; }
.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; background-position: inherit inherit; background-repeat: inherit inherit; }
.CodeMirror-sizer { position: relative; }
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; }
.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; }
.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; }
.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; border: none !important; background-position: 0px 0px !important; background-repeat: initial initial !important; }
.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
.CodeMirror-lines { cursor: text; }
.CodeMirror pre { border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; border-width: 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; word-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; background-position: 0px 0px; background-repeat: initial initial; }
.CodeMirror-wrap pre { word-wrap: break-word; white-space: pre-wrap; word-break: normal; }
.CodeMirror-code pre { border-right-width: 30px; border-right-style: solid; border-right-color: transparent; width: fit-content; }
.CodeMirror-wrap .CodeMirror-code pre { border-right-style: none; width: auto; }
.CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; }
.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right-style: none; width: 0px; }
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
.cm-searching { background-color: rgba(255, 255, 0, 0.4); background-position: initial initial; background-repeat: initial initial; }
@media print { 
  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }
}


/**************************************
* 字体主题
***************************************/
/**************************************
* 标准颜色
***************************************/
/**************************************
* 颜色主题
***************************************/
:root {
  --toc-box-width: 380px;
  --toc-box-left: -380px;
  --vlook-color-scheme: "light";
  --doc-bg-color-light: #FFFFFF;
  --doc-bg-color-alt-light: #e6e6e6;
  --doc-bg-color-alt-transparent-light: rgba(230, 230, 230, 0);
  --fore-color-light: #181A1E;
  --fore-color-alt-light: #737c8f;
  --tips-bg-color-light: rgba(24, 26, 30, 0.75);
  --tips-bg-color-inset-light: rgba(224, 226, 230, 0.75);
  --shadow-color-light: rgba(0, 0, 0, 0.1);
  --a-color-light: #181A1E;
  --a-line-color-light: #5ABD3C;
  --a-active-color-light: #67a455;
  --theme-bg-color-fade-light: rgba(11, 114, 217, 0.5);
  --table-color-light: #B0B2B6;
  --table-border-color-light: rgba(176, 178, 182, 0.8);
  --table-th-bg-color-light: rgba(176, 178, 182, 0.4);
  --table-th-border-color-light: rgba(176, 178, 182, 0.8);
  --img-dark-filter-light: none;
  --del-color-light: #737c8f;
  --toc-header-num-color-light: rgba(24, 26, 30, 0.5);
  --content-header-num-color-light: rgba(11, 114, 217, 0.5);
  --header-color-light: #0B72D9;
  --header-box-shadow-light: rgba(11, 114, 217, 0.2);
  --header-bg-start-color-light: rgba(11, 114, 217, 0);
  --header-bg-end-color-light: rgba(11, 114, 217, 0.1);
  --code-bg-color-light: #b5d8fb;
  --code-bg-color-transparent-light: rgba(181, 216, 251, 0);
  --code-name-bg-color-light: #181A1E;
  --code-name-shadow-color-light: #181A1E;
  --master-color-light: #045AD1;
  --slave-color-light: #C21117;
  --third-color-light: #4DA032;
  --fourth-color-light: #E68D09;
  --fifth-color-light: #953296;
  --sixth-color-light: #585A5D;
  --mermaid-master-color-light: #045AD1;
  --mermaid-master-color-alt-light: #d6e7fe;
  --mermaid-slave-color-light: #C21117;
  --mermaid-slave-color-alt-light: #fbd7d8;
  --mermaid-third-color-light: #4DA032;
  --mermaid-third-color-alt-light: #e3f4dd;
  --mermaid-fourth-color-light: #E68D09;
  --mermaid-fourth-color-alt-light: #fce4bf;
  --mermaid-fifth-color-light: #953296;
  --mermaid-fifth-color-alt-light: #f1d6f1;
  --mermaid-sixth-color-light: #585A5D;
  --mermaid-sixth-color-alt-light: #d9dadb;
  --doc-bg-color-dark: #121418;
  --doc-bg-color-alt-dark: #333844;
  --doc-bg-color-alt-transparent-dark: rgba(51, 56, 68, 0);
  --fore-color-dark: #E0E2E6;
  --fore-color-alt-dark: #8b93a2;
  --tips-bg-color-dark: rgba(224, 226, 230, 0.75);
  --tips-bg-color-inset-dark: rgba(24, 26, 30, 0.75);
  --shadow-color-dark: rgba(255, 255, 255, 0.1);
  --a-color-dark: #E0E2E6;
  --a-line-color-dark: #5ABD3C;
  --a-active-color-dark: #67a455;
  --theme-bg-color-fade-dark: rgba(11, 114, 217, 0.5);
  --table-color-dark: #505256;
  --table-border-color-dark: rgba(80, 82, 86, 0.8);
  --table-th-bg-color-dark: rgba(80, 82, 86, 0.3);
  --table-th-border-color-dark: rgba(80, 82, 86, 0.8);
  --img-dark-filter-dark: brightness(0.9);
  --del-color-dark: #a8adb8;
  --toc-header-num-color-dark: rgba(224, 226, 230, 0.5);
  --content-header-num-color-dark: rgba(59, 152, 245, 0.5);
  --header-color-dark: #0B72D9;
  --header-box-shadow-dark: rgba(11, 114, 217, 0.2);
  --header-bg-start-color-dark: rgba(11, 114, 217, 0);
  --header-bg-end-color-dark: rgba(11, 114, 217, 0.15);
  --code-bg-color-dark: #063f78;
  --code-bg-color-transparent-dark: rgba(6, 63, 120, 0);
  --code-name-bg-color-dark: #121418;
  --code-name-shadow-color-dark: #737c8f;
  --master-color-dark: #022f6d;
  --slave-color-dark: #64090c;
  --third-color-dark: #28521a;
  --fourth-color-dark: #845105;
  --fifth-color-dark: #49184a;
  --sixth-color-dark: #262729;
  --mermaid-master-color-dark: #72acfc;
  --mermaid-master-color-alt-dark: #045AD1;
  --mermaid-slave-color-dark: #f3797d;
  --mermaid-slave-color-alt-dark: #C21117;
  --mermaid-third-color-dark: #a2dc8f;
  --mermaid-third-color-alt-dark: #4DA032;
  --mermaid-fourth-color-dark: #f9ba5c;
  --mermaid-fourth-color-alt-dark: #E68D09;
  --mermaid-fifth-color-dark: #d789d8;
  --mermaid-fifth-color-alt-dark: #953296;
  --mermaid-sixth-color-dark: #a5a7a9;
  --mermaid-sixth-color-alt-dark: #585A5D;
  --doc-bg-color: var(--doc-bg-color-light);
  --doc-bg-color-alt: var(--doc-bg-color-alt-light);
  --doc-bg-color-alt-transparent: var(--doc-bg-color-alt-transparent-light);
  --fore-color: var(--fore-color-light);
  --fore-color-alt: var(--fore-color-alt-light);
  --tips-bg-color: var(--tips-bg-color-light);
  --tips-bg-color-inset: var(--tips-bg-color-inset-light);
  --shadow-color: var(--shadow-color-light);
  --a-color: var(--a-color-light);
  --a-line-color: var(--a-line-color-light);
  --a-active-color: var(--a-active-color-light);
  --theme-bg-color-fade: var(--theme-bg-color-fade-light);
  --table-color: var(--table-color-light);
  --table-border-color: var(--table-border-color-light);
  --table-th-bg-color: var(--table-th-bg-color-light);
  --table-th-border-color: var(--table-th-border-color-light);
  --img-dark-filter: var(--img-dark-filter-light);
  --del-color: var(--del-color-light);
  --toc-header-num-color: var(--toc-header-num-color-light);
  --content-header-num-color: var(--content-header-num-color-light);
  --header-color: var(--header-color-light);
  --header-box-shadow: var(--header-box-shadow-light);
  --header-bg-start-color: var(--header-bg-start-color-light);
  --header-bg-end-color: var(--header-bg-end-color-light);
  --code-bg-color: var(--code-bg-color-light);
  --code-bg-color-transparent: var(--code-bg-color-transparent-light);
  --code-name-bg-color: var(--code-name-bg-color-light);
  --code-name-shadow-color: var(--code-name-bg-color);
  --master-color: var(--master-color-light);
  --slave-color: var(--slave-color-light);
  --third-color: var(--third-color-light);
  --fourth-color: var(--fourth-color-light);
  --fifth-color: var(--fifth-color-light);
  --sixth-color: var(--sixth-color-light);
  --sixth-color-alt: var(--sixth-color-alt-light);
  --mermaid-master-color: var(--mermaid-master-color-light);
  --mermaid-master-color-alt: var(--mermaid-master-color-alt-light);
  --mermaid-slave-color: var(--mermaid-slave-color-light);
  --mermaid-slave-color-alt: var(--mermaid-slave-color-alt-light);
  --mermaid-third-color: var(--mermaid-third-color-light);
  --mermaid-third-color-alt: var(--mermaid-third-color-alt-light);
  --mermaid-fourth-color: var(--mermaid-fourth-color-light);
  --mermaid-fourth-color-alt: var(--mermaid-fourth-color-alt-light);
  --mermaid-fifth-color: var(--mermaid-fifth-color-light);
  --mermaid-fifth-color-alt: var(--mermaid-fifth-color-alt-light);
  --mermaid-sixth-color: var(--mermaid-sixth-color-light);
  --mermaid-sixth-color-alt: var(--mermaid-sixth-color-alt-light);
}
@media (prefers-color-scheme: dark) {
  :root {
    --vlook-color-scheme: "dark";
    --doc-bg-color: var(--doc-bg-color-dark);
    --doc-bg-color-alt: var(--doc-bg-color-alt-dark);
    --doc-bg-color-alt-transparent: var(--doc-bg-color-alt-transparent-dark);
    --fore-color: var(--fore-color-dark);
    --fore-color-alt: var(--fore-color-alt-dark);
    --tips-bg-color: var(--tips-bg-color-dark);
    --tips-bg-color-inset: var(--tips-bg-color-inset-dark);
    --shadow-color: var(--shadow-color-dark);
    --a-color: var(--a-color-dark);
    --a-line-color: var(--a-line-color-dark);
    --a-active-color: var(--a-active-color-dark);
    --theme-bg-color-fade: var(--theme-bg-color-fade-dark);
    --table-color: var(--table-color-dark);
    --table-border-color: var(--table-border-color-dark);
    --table-th-bg-color: var(--table-th-bg-color-dark);
    --table-th-border-color: var(--table-th-border-color-dark);
    --img-dark-filter: var(--img-dark-filter-dark);
    --del-color: var(--del-color-dark);
    --toc-header-num-color: var(--toc-header-num-color-dark);
    --content-header-num-color: var(--content-header-num-color-dark);
    --header-color: var(--header-color-dark);
    --header-box-shadow: var(--header-box-shadow-dark);
    --header-bg-start-color: var(--header-bg-start-color-dark);
    --header-bg-end-color: var(--header-bg-end-color-dark);
    --code-bg-color: var(--code-bg-color-dark);
    --code-bg-color-transparent: var(--code-bg-color-transparent-dark);
    --code-name-bg-color: var(--code-name-bg-color-dark);
    --code-name-shadow-color: var(--code-name-shadow-color-dark);
    --master-color: var(--master-color-dark);
    --slave-color: var(--slave-color-dark);
    --third-color: var(--third-color-dark);
    --fourth-color: var(--fourth-color-dark);
    --fifth-color: var(--fifth-color-dark);
    --sixth-color: var(--sixth-color-dark);
    --mermaid-master-color: var(--mermaid-master-color-dark);
    --mermaid-master-color-alt: var(--mermaid-master-color-alt-dark);
    --mermaid-slave-color: var(--mermaid-slave-color-dark);
    --mermaid-slave-color-alt: var(--mermaid-slave-color-alt-dark);
    --mermaid-third-color: var(--mermaid-third-color-dark);
    --mermaid-third-color-alt: var(--mermaid-third-color-alt-dark);
    --mermaid-fourth-color: var(--mermaid-fourth-color-dark);
    --mermaid-fourth-color-alt: var(--mermaid-fourth-color-alt-dark);
    --mermaid-fifth-color: var(--mermaid-fifth-color-dark);
    --mermaid-fifth-color-alt: var(--mermaid-fifth-color-alt-dark);
    --mermaid-sixth-color: var(--mermaid-sixth-color-dark);
    --mermaid-sixth-color-alt: var(--mermaid-sixth-color-alt-dark);
  }
  img,
  .md-diagram-panel svg,
  .mdx-figure {
    background-image: url("") !important;
  }
}
html {
  font-size: 1em;
  cursor: default;
}
html,
body {
  background-color: var(--doc-bg-color);
  color: var(--fore-color);
  font-family: "Noto Serif CJK SC", "Times New Roman", Times, SimSun, "宋体", "Songti SC", "宋体-简", STZhongsong, "华文中宋", serif;
  font-weight: normal;
  line-height: 2;
  -webkit-tap-highlight-color: transparent;
}
#write {
  max-width: 100%;
  margin: 0 auto;
  padding: 0 30px 0 30px;
}
#write > ul:first-child,
#write > ol:first-child {
  margin-top: 30px;
}
body.typora-export {
  padding-left: 0;
  padding-right: 0;
}
@media screen and (max-width: 1000px) {
  body.typora-export {
    margin-left: 0;
    padding-left: 0;
    padding-right: 0;
  }
  .mdx-loading {
    font-size: 1.3em !important;
  }
}
body > *:first-child {
  margin-top: 0 !important;
}
body > *:last-child {
  margin-bottom: 0 !important;
}
img {
  filter: var(--img-dark-filter);
}
a {
  color: var(--a-color) !important;
  border-bottom: 2px solid #5ABD3C;
  text-decoration: none;
  transition: all 0.3s ease-in-out;
}
a:hover {
  color: #5ABD3C;
  box-shadow: 0 -0.5em 0 rgba(90, 189, 60, 0.3) inset;
}
a:active {
  color: #67a455;
  transition: all 0.3s ease-in-out;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  color: var(--header-color);
  position: relative;
  margin: 1em -10px 0.5em -10px;
  padding: 10px;
  line-height: 1.5;
  font-family: "Noto Serif CJK SC", "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  border-radius: 15px 15px 0 0;
  box-shadow: 0 1px 0 0 var(--header-box-shadow) inset;
  background: linear-gradient(0deg, var(--header-bg-start-color), var(--header-bg-end-color));
}
h1 + ul,
h1 + ol,
h2 + ul,
h2 + ol,
h3 + ul,
h3 + ol,
h4 + ul,
h4 + ol,
h5 + ul,
h5 + ol,
h6 + ul,
h6 + ol {
  margin-top: 0;
}
h1 {
  margin-top: 3em;
  margin-bottom: 1em;
  line-height: 50px;
  font-size: 2em;
}
h2 {
  font-size: 1.8em;
}
h1 + h2 {
  box-shadow: none;
  background: none;
  margin-top: -0.5em;
}
h3 {
  font-size: 1.6em;
}
h2 + h3 {
  box-shadow: none;
  background: none;
  margin-top: -0.5em;
}
h4 {
  font-size: 1.4em;
}
h3 + h4 {
  box-shadow: none;
  background: none;
  margin-top: -0.5em;
}
h5 {
  font-size: 1.2em;
  box-shadow: none;
  background: none;
}
h6 {
  margin-bottom: 0em;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  line-height: 1;
  box-shadow: none;
  background: none;
}
h6::before {
  content: "◎ ";
  color: var(--content-header-num-color);
}
li > h6 {
  color: var(--header-color);
  border-left: 0;
  padding-left: 0;
}
li > h6::before {
  content: "▪ ";
  color: rgba(11, 114, 217, 0.5);
}
strong {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
}
hr {
  margin-top: 1.2em;
  margin-bottom: 1.2em;
  border: 1px solid #737c8f;
  overflow: hidden;
  box-sizing: content-box;
  border-top: 0;
}
body > div > h1:first-of-type {
  border-top: 0;
}
body > h2:first-child {
  margin-top: 0;
  padding-top: 0;
}
body > h1:first-child {
  margin-top: 0;
  padding-top: 0;
}
body > h1:first-child + h2 {
  margin-top: 0;
  padding-top: 0;
}
body > h3:first-child,
body > h4:first-child,
body > h5:first-child,
body > h6:first-child {
  margin-top: 0;
  padding-top: 0;
}
a:first-child > h1,
a:first-child > h2,
a:first-child > h3,
a:first-child > h4,
a:first-child > h5,
a:first-child > h6 {
  margin-top: 0;
  padding-top: 0;
}
ul > li,
ol > li,
p,
figure,
.md-diagram-panel {
  text-align: left;
}
ol > li {
  list-style-type: decimal;
}
ol > li > ul > li {
  list-style-type: lower-alpha;
}
ol > li > ul > li > ul > li {
  list-style-type: disc;
}
ol > li > ul > li > ul > li > ul > li {
  list-style-type: lower-roman;
}
ol > li > ul > li > ul > li > ul > li > ul > li {
  list-style-type: circle;
}
ol > li > ul > li > ul > li > ul > li > ul > li > ul > li {
  list-style-type: square;
}
ul > li {
  list-style-type: decimal;
}
ul > li > ul > li {
  list-style-type: lower-alpha;
}
ul > li > ul > li > ul > li {
  list-style-type: disc;
}
ul > li > ul > li > ul > li > ul > li {
  list-style-type: lower-roman;
}
ul > li > ul > li > ul > li > ul > li > ul > li {
  list-style-type: circle;
}
ul > li > ul > li > ul > li > ul > li > ul > li > ul > li {
  list-style-type: square;
}
ul,
ol {
  padding-left: 2em;
  padding-bottom: 0;
}
blockquote {
  border-left: 0.5em solid rgba(77, 160, 50, 0.15);
  border-radius: 15px;
  padding: 0.5em;
  margin-top: 0.5em;
  margin-bottom: 1em;
  color: #4DA032;
  background-color: rgba(77, 160, 50, 0.05);
}
blockquote > p {
  margin-bottom: 0;
}
blockquote > a {
  color: #4DA032;
}
blockquote > ul,
blockquote > ol {
  margin-top: 0;
}
blockquote > ul > li,
blockquote > ol > li {
  color: var(--fore-color);
}
blockquote > ul > li > a,
blockquote > ol > li > a {
  color: var(--fore-color);
}
blockquote > blockquote {
  border-left: 0.3em solid rgba(77, 160, 50, 0.15);
  margin-left: 0.5em;
  margin-right: 1em;
}
blockquote > blockquote > blockquote {
  border-left: 0.15em solid rgba(77, 160, 50, 0.15);
}
blockquote > blockquote {
  padding-right: 0;
}
blockquote > strong {
  color: inherit !important;
}
#write {
  overflow-x: auto;
}
table {
  border-collapse: inherit;
  border-spacing: 0;
  width: auto;
  line-height: 1.5;
  word-break: break-all;
  border: 2px solid var(--table-border-color);
  border-radius: 15px;
  background-color: var(--doc-bg-color);
}
table > thead > tr {
  margin: 0;
  padding: 0;
}
table > thead > tr > th,
table > thead > tr > td {
  background-color: var(--table-th-bg-color);
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  border-right: 1px solid rgba(176, 178, 182, 0.1);
  margin: 0;
  padding: 0.5em 0.5em;
  box-shadow: 0 1px 0 var(--table-th-border-color);
}
table > tbody > tr:not(:first-child) > td {
  box-shadow: 0 -1px 0 rgba(176, 178, 182, 0.2);
}
table > tbody > tr:nth-child(2n) {
  background-color: rgba(176, 178, 182, 0.1);
}
table > thead > tr:first-child > th:first-child {
  border-top-left-radius: 13px;
}
table > thead > tr:first-child > th:last-child {
  border-top-right-radius: 13px;
}
table > tbody > tr:last-child > td:first-child {
  border-bottom-left-radius: 13px;
}
table > tbody > tr:last-child > td:last-child {
  border-bottom-right-radius: 13px;
}
.mdx-table-td-bold {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
}
table tr > td {
  border-right: 1px solid rgba(176, 178, 182, 0.1);
  margin: 0;
  padding: 0.5em 0.5em;
}
table tr > th:first-child,
table tr > td:first-child {
  padding-left: 0.5em;
}
table tr > th:last-child,
table tr > td:last-child {
  border-right: 0;
  padding-right: 0.5em;
}
table tr:last-child > td {
  border-bottom: 0;
}
li > figure > table,
h1 + figure > table,
h2 + figure > table,
h3 + figure > table,
h4 + figure > table,
h5 + figure > table,
h6 + figure > table {
  counter-reset: tableRowNumber - 1;
}
li > figure > table tbody tr,
h1 + figure > table tbody tr,
h2 + figure > table tbody tr,
h3 + figure > table tbody tr,
h4 + figure > table tbody tr,
h5 + figure > table tbody tr,
h6 + figure > table tbody tr {
  counter-increment: tableRowNumber;
}
figure > table tr > th:first-child::before,
figure > table tr > td:first-child::before {
  content: "#";
  color: var(--toc-header-num-color);
  font-family: Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", monospace;
  font-size: 0.8em;
  vertical-align: middle;
  text-align: right;
  width: 2.5em;
  position: absolute;
  left: -3em;
}
li > figure > table tbody tr > td:first-child::before {
  content: counter(tableRowNumber) " ";
}
li > h6 + figure {
  margin-left: 0em;
}
li h6 + figure table tr > th:first-child::before,
li h6 + figure table tr > td:first-child::before {
  left: -3em;
}
h1 + figure > table tr > th:first-child::before,
h1 + figure > table tr > td:first-child::before,
h2 + figure > table tr > th:first-child::before,
h2 + figure > table tr > td:first-child::before,
h3 + figure > table tr > th:first-child::before,
h3 + figure > table tr > td:first-child::before,
h4 + figure > table tr > th:first-child::before,
h4 + figure > table tr > td:first-child::before,
h5 + figure > table tr > th:first-child::before,
h5 + figure > table tr > td:first-child::before,
h6 + figure > table tr > th:first-child::before,
h6 + figure > table tr > td:first-child::before {
  left: -0.5em;
}
h1 + figure > table tbody tr > td:first-child::before,
h2 + figure > table tbody tr > td:first-child::before,
h3 + figure > table tbody tr > td:first-child::before,
h4 + figure > table tbody tr > td:first-child::before,
h5 + figure > table tbody tr > td:first-child::before,
h6 + figure > table tbody tr > td:first-child::before {
  content: counter(tableRowNumber) " ";
}
li > figure {
  margin-top: 0em;
}
h1 + figure,
h2 + figure,
h3 + figure,
h4 + figure,
h5 + figure,
h6 + figure {
  margin-top: 0em;
  margin-left: 1em;
}
.mdx-table-cross {
  width: 100px;
  height: 100px;
  position: absolute;
  display: none;
  pointer-events: none;
}
.mdx-table-cross-left {
  background: linear-gradient(90deg, rgba(90, 189, 60, 0.01), rgba(90, 189, 60, 0.3));
}
.mdx-table-cross-right {
  background: linear-gradient(90deg, rgba(90, 189, 60, 0.3), rgba(90, 189, 60, 0.01));
}
.mdx-table-cross-up {
  background: linear-gradient(0deg, rgba(90, 189, 60, 0.3), rgba(90, 189, 60, 0.01));
}
.mdx-table-cross-down {
  background: linear-gradient(0deg, rgba(90, 189, 60, 0.01), rgba(90, 189, 60, 0.3));
}
mark {
  background-color: rgba(255, 240, 0, 0.6) !important;
  border-radius: 0.3em;
  color: #000000;
}
mark mark {
  background: none !important;
}
del,
del strong {
  color: var(--del-color) !important;
  text-decoration: line-through var(--fore-color) solid;
}
del code {
  text-decoration: line-through var(--fore-color) solid;
}
.footnotes-area {
  margin-top: 100px;
}
.footnote-line {
  font-size: 1em;
  margin-top: 0.5em;
  padding-bottom: 0.5em;
}
.mdx-footer-note-content > .footnote-line {
  padding-bottom: 50px;
}
.md-fn-count {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
}
.md-fn-count:before {
  content: "[";
}
.md-fn-count:after {
  content: "] ";
}
.reversefootnote {
  color: #045AD1;
}
.reversefootnote:hover {
  color: #C21117;
  transition: all 0.3s ease-in-out;
}
a[name^="ref-footnote-"] {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  color: #045AD1;
}
a[name^="ref-footnote-"]:hover {
  color: #67a455;
  transition: all 0.3s ease-in-out;
}
a[name^="ref-footnote-"]:before {
  content: "[";
}
a[name^="ref-footnote-"]:after {
  content: "] ";
}
.CodeMirror {
  z-index: 0;
}
.CodeMirror-gutters {
  border-right: 1px solid #FFFFFF;
}
.CodeMirror-linenumber {
  color: #737c8f;
}
tt,
code {
  color: var(--fore-color);
  font-family: Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", monospace;
  background-color: var(--code-bg-color);
  border-radius: 0.3em;
  padding: 0.2em 0.3em;
  margin: 0 0.2em;
  font-size: 0.8em;
  white-space: pre-wrap;
  vertical-align: middle;
}
.md-fences {
  color: #181A1E;
  font-family: Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", monospace;
  background-color: #e6e6e6;
  border-radius: 15px;
  border: 2px solid #e6e6e6;
  padding: 1px 4px 1px 4px;
  font-size: 0.8em;
  filter: var(--img-dark-filter);
}
.task-list {
  padding-left: 0;
}
.task-list-item {
  padding-left: 32px;
}
.task-list-item input {
  top: 3px;
  left: 8px;
}
#write pre.md-meta-block {
  padding: 1em;
  font-size: 85%;
  line-height: 2;
  background-color: rgba(24, 26, 30, 0.05);
  border: 0;
  border-radius: 3px;
  color: #181A1E;
  margin-top: 0 !important;
}
.mathjax-block > .code-tooltip {
  bottom: 0.375em;
}
#write > h3.md-focus:before {
  left: -1.5625em;
  top: 0.375em;
}
#write > h4.md-focus:before {
  left: -1.5625em;
  top: 0.285714286em;
}
#write > h5.md-focus:before {
  left: -1.5625em;
  top: 0.285714286em;
}
.md-image > .md-meta {
  border: 1px solid rgba(176, 178, 182, 0.8);
  background-color: rgba(24, 26, 30, 0.05);
  border-radius: 3px;
  padding: 2px 4px 0 4px;
  color: inherit;
}
.md-tag {
  color: inherit;
}
.md-toc,
.mdx-toc {
  margin-top: 0.6em;
  margin-bottom: 0.6em;
  border-radius: 0;
  line-height: 2;
}
.md-toc-h1 {
  font-size: 1em;
}
.md-toc-h2 {
  font-size: 1em;
}
.md-toc-h3,
.md-toc-h4,
.md-toc-h5 {
  font-size: 1em;
}
.md-toc-h1 a,
.md-toc-h2 a,
.md-toc-h3 a,
.md-toc-h4 a,
.md-toc-h5 a {
  text-decoration: none;
  padding: 0 0 0 0;
  border-radius: 0;
}
.md-toc-h1 a:hover,
.md-toc-h2 a:hover,
.md-toc-h3 a:hover,
.md-toc-h4 a:hover,
.md-toc-h5 a:hover {
  color: #67a455;
  background-color: rgba(255, 255, 255, 0);
  text-decoration: none;
  transition: all 0.3s ease-in-out;
}
#typora-quick-open {
  border: 1px solid rgba(176, 178, 182, 0.8);
  background-color: rgba(24, 26, 30, 0.05);
}
#typora-quick-open-item {
  background-color: rgba(24, 26, 30, 0.05);
  border-color: rgba(176, 178, 182, 0.8);
  border-style: solid;
  border-width: 1px;
}
#md-notification:before {
  top: 10px;
}
/** focus mode */
.on-focus-mode blockquote {
  border-left-color: #181A1E;
}
/**************************************
* Header Counters in TOC 目录中的标题序号样式
**************************************/
/* No link underlines in TOC */
.md-toc-content {
  counter-reset: h1toc;
}
.md-toc-h1 {
  margin-left: 0;
  padding-left: 10px;
  counter-reset: h2toc;
}
.md-toc-h2 {
  margin-left: 0;
  padding-left: 20px;
  counter-reset: h3toc;
}
.md-toc-h3 {
  margin-left: 0;
  padding-left: 30px;
  counter-reset: h4toc;
}
.md-toc-h4 {
  margin-left: 0;
  padding-left: 40px;
  counter-reset: h5toc;
}
.md-toc-h5 {
  margin-left: 0;
  padding-left: 50px;
  counter-reset: h6toc;
}
.md-toc-h6 {
  display: none;
  margin-left: 0;
  padding-left: 50px;
}
.md-toc-h1,
.md-toc-h2,
.md-toc-h3,
.md-toc-h4,
.md-toc-h5 {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-size: 1em;
  padding-right: 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}
.md-toc-h1:before,
.md-toc-h2:before,
.md-toc-h3:before,
.md-toc-h4:before,
.md-toc-h5:before {
  color: var(--toc-header-num-color);
}
.md-toc-h1 > a,
.md-toc-h2 > a,
.md-toc-h3 > a,
.md-toc-h4 > a,
.md-toc-h5 > a {
  border: 0;
}
.md-toc-h1 > a:hover,
.md-toc-h2 > a:hover,
.md-toc-h3 > a:hover,
.md-toc-h4 > a:hover,
.md-toc-h5 > a:hover {
  box-shadow: inherit;
  transition: all 0.3s ease-in-out;
}
.md-toc-h1 > a:after,
.md-toc-h2 > a:after,
.md-toc-h3 > a:after,
.md-toc-h4 > a:after,
.md-toc-h5 > a:after {
  content: "";
}
.md-toc-h1:before {
  counter-increment: h1toc;
  content: counter(h1toc) "  ";
}
.md-toc-h1 > .md-toc-inner {
  margin-left: 0;
}
.md-toc-h2:before {
  counter-increment: h2toc;
  content: counter(h1toc) "." counter(h2toc) "  ";
}
.md-toc-h2 > .md-toc-inner {
  margin-left: 0;
}
.md-toc-h3:before {
  counter-increment: h3toc;
  content: counter(h1toc) "." counter(h2toc) "." counter(h3toc) "  ";
}
.md-toc-h3 > .md-toc-inner {
  margin-left: 0;
}
.md-toc-h4:before {
  counter-increment: h4toc;
  content: counter(h1toc) "." counter(h2toc) "." counter(h3toc) "." counter(h4toc) "  ";
}
.md-toc-h4 > .md-toc-inner {
  margin-left: 0;
}
.md-toc-h5:before {
  counter-increment: h5toc;
  content: counter(h1toc) "." counter(h2toc) "." counter(h3toc) "." counter(h4toc) "." counter(h5toc) "  ";
}
.md-toc-h5 > .md-toc-inner {
  margin-left: 0;
}
/**************************************
* Header Counters in Content 内容中的目录序号样式
**************************************/
/** initialize css counter */
#write {
  counter-reset: h1;
}
h1 {
  counter-reset: h2;
}
h2 {
  counter-reset: h3;
}
h3 {
  counter-reset: h4;
}
h4 {
  counter-reset: h5;
}
#write h1:before,
#write h2:before,
#write h3:before,
#write h4:before,
#write h5:before {
  color: var(--content-header-num-color);
}
#write h1:before {
  counter-increment: h1;
  content: counter(h1) "  ";
}
#write h2:before {
  counter-increment: h2;
  content: counter(h1) "." counter(h2) "  ";
}
#write h3:before,
h3.md-focus.md-heading:before {
  /*override the default style for focused headings */
  counter-increment: h3;
  content: counter(h1) "." counter(h2) "." counter(h3) "  ";
}
#write h4:before,
h4.md-focus.md-heading:before {
  counter-increment: h4;
  content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "  ";
}
#write h5:before,
h5.md-focus.md-heading:before {
  counter-increment: h5;
  content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "  ";
}
/** override the default style for focused headings */
#write > h3.md-focus:before,
#write > h4.md-focus:before,
#write > h5.md-focus:before,
h3.md-focus:before,
h4.md-focus:before,
h5.md-focus:before {
  color: inherit;
  border: inherit;
  border-radius: inherit;
  position: inherit;
  left: initial;
  float: none;
  top: initial;
  font-size: inherit;
  padding-left: inherit;
  padding-right: inherit;
  vertical-align: inherit;
  font-weight: inherit;
  line-height: inherit;
}
/**************************************
* Electron UI
**************************************/
.outline-item {
  line-height: 1;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
}
/**************************************
* 脚本化画表 CSS
**************************************/
/* ----- flow diagram 流程图 ----- */
/**************************************
* mermaid CSS
**************************************/
/* ----- flow diagram 流程图 ----- */
.mermaid .label {
  color: var(--fore-color);
  fill: #737c8f;
}
svg[id^="mermaidChart"] {
  color: var(--fore-color);
}
.node rect[rx="0"][ry="0"] {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 5;
}
.node rect[rx="0"][ry="0"] + .label div {
  color: var(--fore-color);
}
.node rect[rx="5"][ry="5"] {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
.node rect[rx="5"][ry="5"] + .label div,
.node rect[rx="15"][ry="15"] + .label div {
  color: var(--fore-color);
}
.node circle {
  fill: none;
  stroke: var(--mermaid-third-color);
  stroke-width: 2;
}
.node circle + .label div {
  color: var(--fore-color);
}
.node ellipse {
  color: var(--fore-color);
  fill: var(--fore-color-alt);
  stroke: var(--fore-color);
  stroke-width: 10;
}
.node polygon[rx^="5"][ry^="5"] {
  fill: var(--mermaid-slave-color-alt);
  stroke: var(--mermaid-slave-color);
  stroke-width: 1;
}
.node polygon[rx^="5"][ry^="5"] + .label div {
  color: var(--fore-color);
}
.node polygon {
  fill: none;
  stroke: var(--mermaid-third-color);
  stroke-width: 2;
}
.node polygon + .label div {
  color: var(--fore-color);
}
.edgePath .path {
  stroke: var(--fore-color);
  stroke-width: 2;
}
.arrowheadPath {
  fill: var(--fore-color);
}
.edgeLabel {
  color: var(--fore-color);
  background-color: var(--doc-bg-color);
  font-family: "Noto Serif CJK SC", "Times New Roman", Times, SimSun, "宋体", "Songti SC", "宋体-简", STZhongsong, "华文中宋", serif;
  font-size: 1em;
  line-height: 2em;
}
.cluster rect {
  fill: var(--doc-bg-color-alt) !important;
  stroke: var(--fore-color) !important;
  stroke-width: 1 !important;
  stroke-dasharray: 3;
  rx: 15 !important;
  ry: 15 !important;
}
.cluster text {
  color: var(--fore-color);
  fill: var(--fore-color);
}
#START rect {
  fill: var(--fore-color);
  stroke: var(--fore-color);
  stroke-width: 5;
  rx: 15 !important;
  ry: 15 !important;
}
#START rect + .label div {
  color: var(--doc-bg-color);
}
#END rect {
  color: var(--fore-color);
  fill: none;
  stroke: var(--fore-color);
  stroke-width: 5;
  rx: 15;
  ry: 15;
}
#END rect + .label div {
  color: var(--fore-color);
}
#INIT circle {
  fill: var(--fore-color);
  stroke: var(--fore-color);
  stroke-width: 5;
}
#INIT .label div {
  color: var(--doc-bg-color);
}
#INIT ~ g > rect {
  fill: var(--mermaid-fifth-color-alt);
  stroke: var(--mermaid-fifth-color);
  stroke-width: 3;
  rx: 15 !important;
  ry: 15 !important;
}
#FINAL circle {
  fill: none;
  stroke: var(--fore-color);
  stroke-width: 5;
}
/* ----- sequeuce diagram 时序图 ----- */
.actor {
  stroke: var(--mermaid-master-color);
  fill: var(--mermaid-master-color-alt);
}
.actor-person {
  stroke: var(--mermaid-slave-color);
  fill: var(--mermaid-slave-color-alt);
}
text.actor {
  fill: var(--fore-color);
  stroke: none;
}
.actor-line {
  stroke: var(--mermaid-master-color);
}
.actor-line-person {
  stroke: var(--mermaid-slave-color);
}
.messageLine0 {
  stroke-width: 2;
  stroke: var(--fore-color);
}
#arrowhead {
  fill: var(--fore-color);
}
.messageLine1 {
  stroke-width: 2;
  stroke: var(--fore-color);
}
#crosshead path {
  fill: var(--fore-color-alt) !important;
  stroke: var(--fore-color) !important;
}
.messageText {
  fill: var(--fore-color);
  stroke: none;
  font-family: "Noto Serif CJK SC", "Times New Roman", Times, SimSun, "宋体", "Songti SC", "宋体-简", STZhongsong, "华文中宋", serif;
  font-size: 1em;
  line-height: 2em;
}
.labelBox {
  stroke: none;
  fill: var(--mermaid-slave-color-alt);
}
.labelText {
  fill: var(--mermaid-slave-color);
  stroke: none;
}
.labelText tspan {
  fill: var(--mermaid-slave-color);
  stroke: none;
}
.loopText {
  fill: var(--mermaid-slave-color);
  stroke: none;
}
.loopText tspan {
  fill: var(--mermaid-slave-color);
  stroke: none;
}
.loopLine {
  stroke-width: 1;
  stroke: var(--mermaid-slave-color);
}
.note {
  stroke: var(--mermaid-third-color);
  stroke-dasharray: 2;
  fill: var(--mermaid-third-color-alt);
}
.noteText,
.noteText tspan {
  fill: var(--fore-color);
  stroke: none;
  font-family: "Noto Serif CJK SC", "Times New Roman", Times, SimSun, "宋体", "Songti SC", "宋体-简", STZhongsong, "华文中宋", serif;
  font-size: 1em;
  line-height: 2em;
}
/* ----- gantt diagram 甘特图 ----- */
.section {
  stroke: none;
}
.section0 {
  fill: var(--fore-color-alt);
}
.section2 {
  fill: var(--fore-color-alt);
}
.section1,
.section3 {
  fill: rgba(24, 26, 30, 0.05);
}
.sectionTitle0,
.sectionTitle1,
.sectionTitle2,
.sectionTitle3 {
  fill: var(--fore-color);
}
.sectionTitle {
  text-anchor: start;
  font-size: 0.8em;
  line-height: 2em;
}
.grid .tick {
  stroke: var(--fore-color-alt);
  shape-rendering: crispEdges;
}
.grid path {
  stroke-width: 0;
}
.today {
  fill: none;
  stroke: var(--mermaid-slave-color);
  stroke-width: 3px;
}
.task {
  stroke-width: 2;
}
.taskText {
  text-anchor: middle;
  font-size: 0.8em;
  line-height: 2em;
}
.taskTextOutsideRight {
  fill: var(--fore-color);
  text-anchor: start;
}
.taskTextOutsideLeft {
  fill: var(--fore-color);
  text-anchor: end;
}
/* 当前的任务 */
.active0,
.active1,
.active2,
.active3 {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
}
.activeText0,
.activeText1,
.activeText2,
.activeText3 {
  fill: var(--mermaid-master-color) !important;
}
/* 已完成的任务 */
.done0,
.done1,
.done2,
.done3 {
  stroke: none;
  fill: var(--mermaid-master-color-alt);
  stroke-width: 2;
  stroke-dasharray: 2;
}
/* 未来的任务 */
.task0,
.task1,
.task2,
.task3 {
  fill: var(--doc-bg-color);
  stroke: var(--mermaid-master-color);
  stroke-dasharray: 2;
}
.taskText0,
.taskText1,
.taskText2,
.taskText3 {
  fill: var(--fore-color);
}
.taskTextOutside0,
.taskTextOutside2 {
  fill: var(--fore-color);
}
.taskTextOutside1,
.taskTextOutside3 {
  fill: var(--fore-color);
}
.doneText0,
.doneText1,
.doneText2,
.doneText3 {
  fill: var(--fore-color) !important;
}
/* 当前关键路径的任务 */
.activeCrit0,
.activeCrit1,
.activeCrit2,
.activeCrit3 {
  stroke: var(--mermaid-slave-color);
  fill: var(--mermaid-slave-color-alt);
  stroke-width: 2;
}
.activeCritText0,
.activeCritText1,
.activeCritText2,
.activeCritText3 {
  fill: var(--mermaid-slave-color) !important;
}
/* 已完成的关键路径任务 */
.doneCrit0,
.doneCrit1,
.doneCrit2,
.doneCrit3 {
  stroke: none;
  fill: var(--mermaid-slave-color-alt);
  stroke-width: 2;
  cursor: pointer;
  shape-rendering: crispEdges;
}
/* 未来的关键路径任务 */
.crit0,
.crit1,
.crit2,
.crit3 {
  stroke: var(--mermaid-slave-color);
  fill: var(--doc-bg-color);
  stroke-width: 2;
  stroke-dasharray: 2;
}
.critText0,
.critText1,
.critText2,
.critText3 {
  fill: var(--fore-color);
}
.doneCritText0,
.doneCritText1,
.doneCritText2,
.doneCritText3 {
  fill: var(--fore-color) !important;
}
/* 标题 */
.titleText {
  text-anchor: middle;
  font-size: 1.3em;
  line-height: 2em;
  fill: var(--fore-color);
}
/* ----- class diagram 类图 ----- */
g.classGroup text {
  fill: var(--fore-color);
  stroke: none;
}
g.classGroup rect {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
}
g.classGroup line {
  stroke: var(--fore-color);
  stroke-width: 1;
}
svg .classLabel .box {
  stroke: none;
  stroke-width: 0;
  fill: var(--mermaid-master-color-alt);
  opacity: 0.5;
}
svg .classLabel .label {
  fill: var(--mermaid-master-color-alt);
}
.relation {
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
  fill: none;
}
.composition {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#compositionStart {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#compositionEnd {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
.aggregation {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--fore-color);
  stroke-width: 1;
}
#aggregationStart {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#aggregationEnd {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#dependencyStart {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#dependencyEnd {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#extensionStart {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
#extensionEnd {
  fill: var(--mermaid-master-color-alt);
  stroke: var(--mermaid-master-color);
  stroke-width: 1;
}
div.mermaidTooltip {
  position: absolute;
  text-align: center;
  max-width: 200px;
  padding: 2px;
  background: var(--fore-color-alt);
  border: 1px solid #d0d0d0;
  border-radius: 2px;
  pointer-events: none;
  z-index: 100;
}
/**************************************
* 重定义Typora原生样式
**************************************/
#write {
  padding-left: 20px;
  padding-right: 20px;
}
.CodeMirror.cm-s-inner {
  border-radius: 15px;
}
/* 数学公式 */
.MathJax_SVG,
.MathJax_SVG_Display {
  border: 2px solid var(--theme-bg-color-fade);
  border-radius: 0.3em;
  padding: 0.3em 0.3em;
}
.MathJax_SVG_Display > .MathJax_SVG {
  border: none;
}
.MathJax_SVG:hover,
.MathJax_SVG_Display:hover {
  border-color: #5ABD3C;
}
.MathJax_SVG:active,
.MathJax_SVG_Display:active {
  background-color: var(--doc-bg-color);
  transform: scale(1.5);
  transition: all 0.3s ease-in-out;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
}
.MathJax_SVG_Display > .MathJax_SVG:active {
  transform: none;
}
.MathJax_SVG g text {
  font-family: "Noto Serif CJK SC", "Times New Roman", Times, SimSun, "宋体", "Songti SC", "宋体-简", STZhongsong, "华文中宋", serif;
  color: var(--fore-color);
}
/* md 系统样式 */
.md-toc-inner {
  text-decoration: none;
  box-shadow: none;
}
.md-toc-item:hover {
  box-shadow: 0 -1px 0 var(--a-line-color) inset;
  transition: all 0.3s ease-in-out;
}
.md-toc-item:active {
  box-shadow: 0 -1px 0 var(--a-active-color) inset;
  transition: all 0.3s ease-in-out;
}
.md-toc-item > a {
  color: var(--fore-color);
}
.md-toc-item:hover > a,
.md-toc-item a:hover {
  color: var(--a-line-color);
  transition: all 0.3s ease-in-out;
}
.md-toc-item:active > a,
.md-toc-item a:active {
  color: var(--a-active-color);
  transition: all 0.3s ease-in-out;
}
#svg-figure-content {
  margin: 5px;
  padding: 5px;
  border-radius: 0.3em;
  cursor: pointer;
  display: table-cell;
  align-content: center;
  text-align: center;
  vertical-align: middle;
  width: 100%;
}
sup.md-footnote {
  background-color: inherit;
}
sup.md-footnote > a {
  color: var(--a-line-color) !important;
  margin-left: 0.5em;
  margin-right: 0.5em;
  box-shadow: none;
  border-bottom: none;
}
sup.md-footnote > a:hover {
  box-shadow: 0 -0.5em 0 rgba(90, 189, 60, 0.3) inset;
  border-bottom: 0;
}
.footnote-line > a:not(.reversefootnote) {
  color: var(--fore-color);
}
kbd {
  font-family: Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", monospace;
  font-size: 0.8em;
  font-weight: bold;
  border-radius: 0.3em;
  margin: 0 0.2em;
  padding: 0em 0.3em;
  background-color: var(--doc-bg-color);
  color: var(--fore-color);
  border: 0.1em solid var(--fore-color-alt);
  box-shadow: 0 0.1em 0 var(--fore-color-alt);
}
ul > .md-task-list-item {
  list-style-type: decimal !important;
}
ul > li > ul > .md-task-list-item {
  list-style-type: upper-alpha !important;
}
ul > li > ul > li > ul > .md-task-list-item {
  list-style-type: lower-alpha !important;
}
ul > li > ul > li > ul > li > ul > .md-task-list-item {
  list-style-type: disc !important;
}
ul > li > ul > li > ul > li > ul > li > ul > .md-task-list-item {
  list-style-type: circle !important;
}
ul > li > ul > li > ul > li > ul > li > ul > li > ul > .md-task-list-item {
  list-style-type: square !important;
}
.md-task-list-item > input {
  margin-left: -0.5em !important;
  margin-top: 0.3em !important;
}
.md-task-list-item > p {
  margin-left: 1.2em !important;
  margin-top: 0;
  margin-bottom: 0;
}
li > :first-child,
li p {
  margin-top: 0;
  margin-bottom: 0;
}
/**************************************
* VLOOK UI 自定义样式
**************************************/
.mdx-font-header-sans {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-title-sans {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-text-sans {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-bold-sans {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-code-sans {
  font-family: Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", monospace !important;
}
.mdx-font-header-serif {
  font-family: "Noto Serif CJK SC", "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-title-serif {
  font-family: "Noto Serif CJK SC", "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-text-serif {
  font-family: "Noto Serif CJK SC", "Times New Roman", Times, SimSun, "宋体", "Songti SC", "宋体-简", STZhongsong, "华文中宋", serif;
}
.mdx-font-bold-serif {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif !important;
}
.mdx-font-code-serif {
  font-family: Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", monospace !important;
}
.mdx-spotlight {
  display: none;
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  pointer-events: none;
  z-index: 99999;
}
.mdx-tool-tips,
.mdx-info-tips {
  display: none;
  position: fixed;
  margin-left: auto;
  padding: 0.5em 1em;
  text-align: center;
  white-space: nowrap;
  border-radius: 15px;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  color: var(--doc-bg-color);
  background-color: var(--tips-bg-color);
  z-index: 8000;
}
.mdx-tool-tips {
  border-top: 2px solid #5ABD3C;
  text-align: left;
}
.mdx-tool-tips strong,
.mdx-info-tips strong {
  color: var(--doc-bg-color);
}
.mdx-tool-tips a,
.mdx-info-tips a {
  color: var(--doc-bg-color) !important;
  font-weight: bold;
}
.mdx-loading {
  cursor: wait;
  position: fixed;
  color: #FFFFFF;
  background: linear-gradient(#0B72D9 40%, rgba(11, 114, 217, 0.5));
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  font-family: "Noto Serif CJK SC", "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-size: 1.5em;
  overflow: auto;
  z-index: 9000;
}
@keyframes breathe {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    opacity: 0.5;
    transform: scale(0.98);
  }
}
.mdx-loading-tips {
  padding: 2em 2em 1em 2em;
  animation: 1.5s breathe infinite alternate;
}
.mdx-loading-tips > div {
  text-align: center;
  line-height: 1.2;
  margin-bottom: 1.2em;
}
.mdx-loading-done {
  cursor: not-allowed;
  padding-left: 1em;
  padding-right: 1em;
  color: #0B72D9;
  background-color: #FFFFFF;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: normal;
  display: inline-block;
  border-radius: 1em;
  margin-bottom: 2em;
  transition: all 0.3s ease-in-out;
}
.mdx-loading-done:hover {
  color: #FFFFFF;
  background-color: #5ABD3C;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
  transition: all 0.3s ease-in-out;
  transform: translateY(-2px);
}
.mdx-loading-done:active {
  transform: none;
  box-shadow: none;
  transition: all 0.3s ease-in-out;
}
.mdx-current-blockfocus-item {
  box-shadow: 0 0 10px 0 #5ABD3C;
  border-radius: 15px;
}
.md-diagram-panel svg {
  width: 100%;
}
.mdx-blockquote-folder:hover {
  color: #28521a;
  transition: all 0.3s ease-in-out;
}
.mdx-toc-box {
  background-color: var(--doc-bg-color-alt);
  border-radius: 15px;
  cursor: default;
  display: block;
  left: var(--toc-box-left);
  top: 10px;
  bottom: 40px;
  width: var(--toc-box-width);
  padding: 0;
  position: fixed;
  z-index: 2000;
  user-select: none;
}
.mdx-toc-box-header {
  color: #181A1E;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-size: 1.2em;
  height: 70px;
  padding: 10px 0 0 0;
  background: linear-gradient(180deg, var(--doc-bg-color-alt) 40px, var(--doc-bg-color-alt-transparent));
  left: 2px;
  right: 2px;
  top: 2px;
  position: absolute;
  border-top-right-radius: 15px;
  border-top-left-radius: 15px;
  z-index: 100;
}
.mdx-toc-box-title {
  text-align: center;
  position: absolute;
  width: 100%;
  height: 30px;
  line-height: 30px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  font-size: 1em;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  color: var(--a-color);
  cursor: pointer;
}
.mdx-toc-box-title:hover {
  color: #5ABD3C;
  border-bottom: 1px solid #5ABD3C;
  transition: all 0.3s ease-in-out;
}
.mdx-toc-box-title:active {
  color: #67a455;
  transition: all 0.3s ease-in-out;
}
.mdx-toc-box-body-scroll {
  width: 100%;
  height: 100%;
  padding: 0;
  padding-top: 40px;
  padding-bottom: 10px;
  border-radius: 15px;
  overflow: auto;
  overflow-y: hidden;
  z-index: 99;
}
.mdx-toc-box-body {
  width: 100%;
  height: 100%;
  padding: 10px 0 10px 0;
  overflow-y: scroll;
  z-index: 99;
}
.mdx-toc-box-footer {
  font-size: 0.8em;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  height: 50px;
  line-height: 40px;
  left: 2px;
  right: 2px;
  bottom: 2px;
  text-align: center;
  padding: 0;
  background: linear-gradient(0deg, var(--doc-bg-color-alt) 10px, var(--doc-bg-color-alt-transparent));
  border-bottom-right-radius: 15px;
  border-bottom-left-radius: 15px;
  position: absolute;
  z-index: 100;
}
.mdx-copyright,
.mdx-copyright a {
  color: #fff;
}
.mdx-copyright {
  left: 0;
  bottom: 0;
  text-align: center;
  width: 100%;
  height: 40px;
  padding: 5px 10px;
  font-size: 0.8em;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  position: absolute;
  text-shadow: 0 0 5px #000;
}
.mdx-float-card {
  box-shadow: 0 3px 20px rgba(0, 0, 0, 0.3), none;
}
.mdx-footer-note {
  position: fixed;
  left: 15%;
  right: 15%;
  bottom: -200px;
  height: 200px;
  border-radius: 15px;
  box-shadow: 0 3px 20px rgba(0, 0, 0, 0.3);
  margin: 0 auto;
  background-color: var(--doc-bg-color-alt);
  display: none;
  z-index: 5000;
}
.mdx-footer-note > a {
  color: var(--fore-color);
}
.mdx-footer-note-header {
  height: 30px;
  top: 2px;
  left: 2px;
  right: 2px;
  position: absolute;
  background: linear-gradient(180deg, var(--doc-bg-color-alt) 5px, var(--doc-bg-color-alt-transparent));
  border-radius: 15px;
}
.mdx-footer-note-content {
  width: 100%;
  top: 2px;
  bottom: 2px;
  padding: 10px 20px;
  position: absolute;
  overflow-x: auto;
}
.mdx-footer-note-toolbar {
  font-weight: bold;
  height: 60px;
  left: 2px;
  right: 2px;
  bottom: 2px;
  line-height: 70px;
  bottom: 0;
  padding: 0 20px;
  margin: 2px;
  border-radius: 15px;
  background: linear-gradient(0deg, var(--doc-bg-color-alt) 35px, var(--doc-bg-color-alt-transparent));
  position: absolute;
}
.mdx-toolbar {
  border-bottom-left-radius: 15px;
  border-bottom-right-radius: 15px;
  left: 10px;
  top: 0;
  width: var(--toc-box-width);
  height: 50px;
  position: fixed;
  background-color: rgba(11, 114, 217, 0.75);
  transition: opacity 1s ease-in-out;
  z-index: 100;
}
.mdx-toolbar:hover {
  opacity: 1;
  transition: opacity 0.3s ease-in-out;
}
.mdx-btn-outline {
  display: flex;
  justify-content: center;
  align-items: center;
  color: #FFFFFF;
  background-color: #181A1E;
  cursor: pointer;
  float: left;
  width: 30px;
  height: 30px;
  padding-top: 0;
  margin-top: 10px;
  margin-left: 10px;
  text-align: center;
  visibility: visible;
}
.mdx-header-current {
  background: linear-gradient(90deg, var(--code-bg-color-transparent), var(--theme-bg-color-fade), var(--code-bg-color-transparent));
}
.mdx-header-current a {
  font-weight: bold;
}
.mdx-folder {
  color: #737c8f;
  float: left;
  width: 16px;
  text-align: center;
}
.mdx-folder:hover {
  color: #67a455;
  transition: all 0.3s ease-in-out;
}
.mdx-btn {
  display: flex;
  justify-content: center;
  align-items: center;
  vertical-align: middle;
  color: #FFFFFF;
  background-color: #0B72D9;
  cursor: pointer;
  padding: 0;
  font-size: 0.8em;
  width: 40px;
  height: 30px;
  border-radius: 8px;
}
.mdx-btn-hover:hover {
  background-color: #5ABD3C;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
  transition: all 0.3s ease-in-out;
  transform: translateY(-2px);
}
.mdx-btn-leave {
  background-color: #0B72D9;
  transition: all 0.3s ease-in-out;
  transform: none;
}
.mdx-btn:active {
  background-color: #67a455;
  box-shadow: none;
  transition: all 0.3s ease-in-out;
  transform: none;
}
.mdx-btn-nav-back {
  margin-top: 10px;
  margin-left: 10px;
  float: left;
  visibility: hidden;
  display: none;
}
.mdx-btn-nav-forward {
  margin-top: 10px;
  margin-left: 10px;
  float: left;
  visibility: hidden;
  display: none;
}
.mdx-nav-prev {
  top: 0;
  left: 0;
  width: 20%;
  height: 50px;
  position: absolute;
  cursor: pointer;
  border-bottom-left-radius: 15px;
}
.mdx-nav-prev:hover {
  background: linear-gradient(to right, rgba(90, 189, 60, 0.7), rgba(90, 189, 60, 0));
  transition: all 0.3s ease-in-out;
}
.mdx-nav-prev:active {
  background: none;
  transition: all 0.3s ease-in-out;
}
.mdx-nav-prev-text {
  top: 0;
  left: 30px;
  width: 100%;
  height: 50px;
  line-height: 50px;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  color: #FFFFFF;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  position: absolute;
  cursor: pointer;
  display: none;
}
.mdx-nav-next {
  top: 0;
  right: 0;
  width: 20%;
  height: 50px;
  position: absolute;
  cursor: pointer;
  border-bottom-right-radius: 15px;
}
.mdx-nav-next:hover {
  background: linear-gradient(to left, rgba(90, 189, 60, 0.7), rgba(90, 189, 60, 0));
  transition: all 0.3s ease-in-out;
}
.mdx-nav-next:active {
  background: none;
  transition: all 0.3s ease-in-out;
}
.mdx-nav-next-text {
  top: 0;
  right: 30px;
  width: 100%;
  height: 50px;
  line-height: 50px;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  color: #FFFFFF;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  position: absolute;
  cursor: pointer;
  display: block;
}
.mdx-bread-nav {
  background-color: rgba(11, 114, 217, 0.75);
  border-bottom-left-radius: 15px;
  border-bottom-right-radius: 15px;
  top: -50px;
  left: 10px;
  right: 10px;
  height: 50px;
  position: fixed;
  padding: 0;
  vertical-align: middle;
  z-index: 100;
  user-select: none;
  transition: all 0.3s ease-in-out;
}
.mdx-bread-nav-text {
  color: #FFFFFF;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-size: 1.4em;
  font-weight: bold;
  text-align: center;
  line-height: 50px;
  margin-left: 40px;
  margin-right: 40px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  width: auto;
  height: 50px;
  cursor: pointer;
  display: block;
}
.mdx-bread-nav-text:hover {
  background: linear-gradient(90deg, rgba(90, 189, 60, 0), rgba(90, 189, 60, 0.7), rgba(90, 189, 60, 0));
  transition: all 0.3s ease-in-out;
}
.mdx-bread-nav-text:active {
  background: none;
  transition: all 0.3s ease-in-out;
}
.mdx-btn-fullscreen {
  margin-top: 10px;
  margin-left: 10px;
  float: left;
  display: none;
}
.mdx-btn-color-scheme {
  margin-top: 10px;
  margin-right: 10px;
  float: right;
}
.mdx-btn-font-style {
  margin-top: 10px;
  margin-right: 10px;
  float: right;
}
.mdx-btn-figure-launcher {
  margin-top: 10px;
  margin-left: 10px;
  visibility: hidden;
  float: left;
}
.mdx-btn-spotlight {
  margin-top: 10px;
  margin-right: 10px;
  float: right;
}
.mdx-btn-print {
  margin-top: 10px;
  margin-right: 10px;
  margin-left: 20px;
  float: right;
}
.mdx-figure-viewer {
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  position: fixed;
  display: none;
  z-index: 4000;
}
.mdx-btn-prev-figure {
  left: 10px;
  top: auto;
  box-shadow: none;
  border-radius: 15px;
  position: absolute;
  bottom: 10px;
}
.mdx-btn-next-figure {
  right: 10px;
  top: auto;
  box-shadow: none;
  border-radius: 15px;
  position: absolute;
  bottom: 10px;
}
.mdx-btn-close-figure-viewer {
  right: 10px;
  top: 10px;
  box-shadow: none;
  border-radius: 15px;
  position: absolute;
}
.mdx-figure-action {
  border-radius: 15px;
  border-top-right-radius: 0;
  border-bottom-left-radius: 0;
  box-shadow: none;
  position: absolute;
  z-index: 10;
}
img,
.md-diagram-panel svg,
.mdx-figure {
  background-image: url("");
  background-repeat: repeat;
  background-position: left top;
  border-radius: 15px;
  padding: 0;
  border: 2px solid var(--table-border-color);
  display: block;
  transition: all 0.3s ease-in-out;
}
img:hover,
.mdx-figure:hover,
table:hover {
  border-color: #5ABD3C !important;
  transition: all 0.3s ease-in-out;
}
.mdx-img-invert-in-dark {
  filter: invert(1);
  border-color: rgba(175, 173, 169, 0.8) !important;
}
.mdx-img-invert-in-dark:hover {
  border-color: #a542c3 !important;
}
.mdx-figure-bg-dark {
  background-image: url("") !important;
}
.mdx-figure-content {
  margin: 5px;
  padding: 5px;
  cursor: pointer;
  display: table-cell;
  align-content: center;
  text-align: center;
  vertical-align: middle;
  width: 100%;
  color: var(--fore-color);
}
.mdx-figure-pagenum {
  left: 10px;
  top: 10px;
  position: absolute;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}
.mdx-figure-alt {
  text-align: center;
  display: inline-block;
  border-radius: 15px;
  background-color: var(--doc-bg-color-alt);
  transition: all 0.3s ease-in-out;
}
.mdx-figure-alt > span {
  color: var(--fore-color);
  font-size: 0.8em;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
}
.mdx-figure-alt hr {
  border-bottom: 2px solid #737c8f;
  margin: 0.5em;
  margin-left: auto;
  margin-right: auto;
}
use.mdx-svg-ico-light {
  fill: #FFFFFF;
}
use.mdx-svg-ico-dark {
  fill: #737c8f;
}
use.mdx-svg-ico-dark:hover {
  fill: #C21117;
  transition: all 0.3s ease-in-out;
}
.mdx-mask {
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  position: fixed;
  background-color: rgba(0, 0, 0, 0.5);
  display: none;
  z-index: 1000;
}
.mdx-backdrop-blurs {
  backdrop-filter: blur(15px);
  -webkit-backdrop-filter: blur(15px);
}
.mdx-click-bubble {
  left: 0;
  top: 0;
  width: 0;
  height: 0;
  position: fixed;
  background-color: #C21117;
  opacity: 0.7;
  z-index: 9999;
}
.mdx-code-c1,
.mdx-code-c2,
.mdx-code-c3,
.mdx-code-c4,
.mdx-code-c5,
.mdx-code-c6 {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  color: #FFFFFF;
  padding: 0.2em 0.4em;
  border-radius: 0.5em;
}
.mdx-code-c1 {
  background-color: var(--master-color);
  box-shadow: 0 0 0 1px var(--master-color-light) inset;
}
.mdx-code-c2 {
  background-color: var(--third-color);
  box-shadow: 0 0 0 1px var(--third-color-light) inset;
}
.mdx-code-c3 {
  background-color: var(--fourth-color);
  box-shadow: 0 0 0 1px var(--fourth-color-light) inset;
}
.mdx-code-c4 {
  background-color: var(--slave-color);
  box-shadow: 0 0 0 1px var(--slave-color-light) inset;
}
.mdx-code-c5 {
  background-color: var(--fifth-color);
  box-shadow: 0 0 0 1px var(--fifth-color-light) inset;
}
.mdx-code-c6 {
  background-color: var(--sixth-color);
  box-shadow: 0 0 0 1px var(--sixth-color-light) inset;
}
.mdx-code-name1,
.mdx-code-name2,
.mdx-code-name3,
.mdx-code-name4,
.mdx-code-name5,
.mdx-code-name6 {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: normal !important;
  margin-right: 0;
  border-radius: 0.5em 0em 0em 0.5em;
  padding: 0.2em 1em 0.2em 0.4em;
  color: #FFFFFF;
  background: var(--code-name-bg-color);
  box-shadow: 0 0 0 1px var(--code-name-shadow-color) inset;
  font-size: 0.8em;
}
.mdx-code-value1,
.mdx-code-value2,
.mdx-code-value3,
.mdx-code-value4,
.mdx-code-value5,
.mdx-code-value6 {
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  margin-left: -0.6em;
  border-radius: 0.5em;
  padding: 0.2em 0.4em;
  color: #FFFFFF;
  font-size: 0.8em;
}
.mdx-code-value1 {
  background-color: var(--master-color);
  box-shadow: 0 0 0 1px var(--master-color-light) inset;
}
.mdx-code-value2 {
  background-color: var(--third-color);
  box-shadow: 0 0 0 1px var(--third-color-light) inset;
}
.mdx-code-value3 {
  background-color: var(--fourth-color);
  box-shadow: 0 0 0 1px var(--fourth-color-light) inset;
}
.mdx-code-value4 {
  background-color: var(--slave-color);
  box-shadow: 0 0 0 1px var(--slave-color-light) inset;
}
.mdx-code-value5 {
  background-color: var(--fifth-color);
  box-shadow: 0 0 0 1px var(--fifth-color-light) inset;
}
.mdx-code-value6 {
  background-color: var(--sixth-color);
  box-shadow: 0 0 0 1px var(--sixth-color-light) inset;
}
h6 code {
  font-weight: normal;
}
/**************************************
* 封面、封底
**************************************/
#write > h6:first-of-type,
#write > h6:last-of-type {
  display: block;
  color: #FFFFFF !important;
  font-size: 2.5em;
  font-family: "Noto Serif CJK SC", "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  text-align: center;
  height: 25cm;
  padding-left: 30px;
  padding-top: 150px;
  padding-right: 20px;
  margin: 10px -10px;
  margin-bottom: 3em;
  border: 0;
  border-radius: 15px;
  box-shadow: none;
  background-color: #0B72D9;
  background-image: url(""), url("");
  background-repeat: repeat-x, repeat-x;
  background-position: top, bottom center;
}
#write > h6:last-of-type {
  height: 13cm;
  margin-top: 3em;
  margin-bottom: 10px;
  padding-top: 50px;
}
#write > h6:first-of-type::before,
#write > h6:last-of-type::before {
  content: "";
}
#write > h6:first-of-type strong {
  color: rgba(255, 255, 255, 0.5);
  font-size: 0.7em;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-weight: bold;
  text-decoration: none;
}
#write > h6:first-of-type strong::before {
  content: "By ";
  font-size: 0.8em;
  font-weight: normal;
  text-decoration: none;
}
#write > h6:first-of-type em {
  color: rgba(255, 255, 255, 0.5);
  font-size: 0.35em;
  font-family: "Noto Sans CJK SC", "PingFang SC", "苹方-简", "Helvetica Neue", Helvetica, Arial, Tahoma, "Noto Sans CJK SC", SimHei, "黑体", "Heiti SC", "黑体-简", "Microsoft YaHei", "微软雅黑", sans-serif;
  font-style: normal;
  vertical-align: sub;
}
#write > h6:first-of-type code {
  font-size: 0.4em !important;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.2) inset;
}
@media print {
  html {
    font-size: 1em;
  }
  #write {
    margin: 0 !important;
  }
  #write .md-toc {
    display: block !important;
  }
  .mdx-header-current {
    background: none !important;
  }
  .mdx-toc {
    display: block !important;
    visibility: visible !important;
  }
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    box-shadow: none !important;
    background: none !important;
  }
  .mdx-table-cross {
    box-shadow: none !important;
    background: none !important;
  }
  .mdx-figure:hover,
  img:hover,
  table:hover {
    border-color: var(--table-border-color) !important;
  }
  .mdx-img-invert-in-dark {
    filter: none;
  }
  table:hover {
    border-color: var(--table-border-color) !important;
  }
  blockquote {
    display: block !important;
  }
  .mdx-loading,
  .mdx-tool-tips,
  .mdx-info-tips {
    display: none !important;
  }
  .mdx-current-blockfocus-item {
    box-shadow: none !important;
  }
  .mdx-toolbar,
  .mdx-bread-nav,
  .mdx-toc-box,
  .mdx-toc-box-header,
  .mdx-toc-box-body-scroll,
  .mdx-docbar-bottom {
    display: none;
    visibility: hidden;
  }
  #write > h6:first-of-type,
  #write > h6:last-of-type,
  #write > h6:first-of-type strong,
  #write > h6:first-of-type em {
    background: none !important;
    background-color: #FFFFFF !important;
    color: #181A1E !important;
  }
}


 .typora-export li, .typora-export p, .typora-export,  .footnote-line {white-space: normal;} 
</style>
</head>
<body class='typora-export' >
<!--========================================================================-->
<!--                                                                        -->
<!--                       Typora Plugin - VLOOK V9.2                       -->
<!--                                                                        -->
<!--                               2019-10-24                               -->
<!--                             powered by Max                             -->
<!--                                                                        -->
<!--              QQ Group: 805502564    email: maxchow@qq.com              -->
<!--                                                                        -->
<!--========================================================================-->
<!--                                                                        -->
<!--                  https://github.com/MadMaxChow/VLOOK                   -->
<!--

MIT License

Copyright (c) 2018 MAX°DESIGN | Max Chow
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

MIT许可证（MIT）

版权所有 (c) 2018 MAX°DESIGN | Max Chow
在此授予任何获得此软件和相关文档文件（“软件”）副本的人免费许可，以无限制地处理本软件，包括但不限于使用，复制，修改，合并，发布，分发，再授权和/或出售本软件的副本，并允许本软件的授予人员遵从以下情况：
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按“原样”提供，不提供任何以表达或暗示，包括但不限于销售，适用于特定用途和不侵权的保证。在任何情况下，作者或版权所有人不对因软件或软件的使用或其他事宜产生的任何索赔，损害或其他责任（无论是在合同，侵权或其他方面的诉讼中）负责。

-->
<script type="text/javascript">
    var _startTimer = new Date().getTime();
    var _lastTimer = _startTimer;
    console.log("loading VLOOK ...");
</script>
<!--      !!!NOTE!!! NEED NETWORKING      -->
<!--<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>-->
<!--   !!!NOTE!!! DON'T NEED NETWORKING   -->
<script type="text/javascript">
    /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
    !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--spotlightR;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--spotlightR||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
</script>
<!-- 加载进程 -->
<div class="mdx-loading mdx-backdrop-blurs">
    <div class="mdx-loading-tips">
        <div>不要著急，最好的總會在最不經意的時候出現。</div>
        <div>Don't worry, the best will always appear in the most casual time.</div>
        <div>心配しないで、最高のものが常に最もカジュアルな時間に表示されます。</div>
        <div>Ne vous inquiétez pas, le meilleur apparaîtra toujours au moment le plus décontracté.</div>
        <div>걱정하지 마십시오. 최고는 항상 가장 우연한 시간에 나타납니다.</div>
        <div>Не волнуйтесь, лучшее всегда будет появляться в самое случайное время.</div>
        :
    </div>
    <div class="mdx-loading-done">
        Loading...
    </div>
</div>
<!-- SVG图标集 -->
<svg style="display: none;">
    <!-- 图标|大纲 -->
    <symbol id="icoOutline">
        <path
            d="M6,0 L19,0 C19.5522847,0 20,0.44771525 20,1 C20,1.55228475 19.5522847,2 19,2 L6,2 C5.44771525,2 5,1.55228475 5,1 C5,0.44771525 5.44771525,0 6,0 Z M1,0 L2,0 C2.55228475,0 3,0.44771525 3,1 C3,1.55228475 2.55228475,2 2,2 L1,2 C0.44771525,2 0,1.55228475 0,1 C0,0.44771525 0.44771525,0 1,0 Z M1,6 L2,6 C2.55228475,6 3,6.44771525 3,7 C3,7.55228475 2.55228475,8 2,8 L1,8 C0.44771525,8 0,7.55228475 0,7 C0,6.44771525 0.44771525,6 1,6 Z M1,12 L2,12 C2.55228475,12 3,12.4477153 3,13 C3,13.5522847 2.55228475,14 2,14 L1,14 C0.44771525,14 0,13.5522847 0,13 C0,12.4477153 0.44771525,12 1,12 Z M6,6 L19,6 C19.5522847,6 20,6.44771525 20,7 C20,7.55228475 19.5522847,8 19,8 L6,8 C5.44771525,8 5,7.55228475 5,7 C5,6.44771525 5.44771525,6 6,6 Z M6,12 L19,12 C19.5522847,12 20,12.4477153 20,13 C20,13.5522847 19.5522847,14 19,14 L6,14 C5.44771525,14 5,13.5522847 5,13 C5,12.4477153 5.44771525,12 6,12 Z">
        </path>
    </symbol>
    <!-- 图标|左向箭头1 -->
    <symbol id="icoLeft">
        <path
            d="M3.50594063,6.15000153 L7.53462181,2.12132034 C7.9251461,1.73079605 7.9251461,1.09763107 7.53462181,0.707106781 C7.14409752,0.316582489 6.51093254,0.316582489 6.12040825,0.707106781 L0.463554001,6.36396103 C0.241806749,6.58570828 0.145971879,6.88568746 0.176049391,7.17505536 C0.190303885,7.41033487 0.287321184,7.64153719 0.467101288,7.82131729 L0.467101288,7.82131729 L6.12395554,13.4781715 C6.51447983,13.8686958 7.14764481,13.8686958 7.5381691,13.4781715 C7.92869339,13.0876472 7.92869339,12.4544823 7.5381691,12.063958 L3.62421265,8.15000153 L12.9990879,8.15000153 C13.5513727,8.15000153 13.9990879,7.70228628 13.9990879,7.15000153 C13.9990879,6.59771678 13.5513727,6.15000153 12.9990879,6.15000153 L3.50594063,6.15000153 Z">
        </path>
    </symbol>
    <!-- 图标|右向箭头1 -->
    <symbol id="icoRight">
        <path
            d="M3.50594063,6.15000153 L7.53462181,2.12132034 C7.9251461,1.73079605 7.9251461,1.09763107 7.53462181,0.707106781 C7.14409752,0.316582489 6.51093254,0.316582489 6.12040825,0.707106781 L0.463554001,6.36396103 C0.241806749,6.58570828 0.145971879,6.88568746 0.176049391,7.17505536 C0.190303885,7.41033487 0.287321184,7.64153719 0.467101288,7.82131729 L0.467101288,7.82131729 L6.12395554,13.4781715 C6.51447983,13.8686958 7.14764481,13.8686958 7.5381691,13.4781715 C7.92869339,13.0876472 7.92869339,12.4544823 7.5381691,12.063958 L3.62421265,8.15000153 L12.9990879,8.15000153 C13.5513727,8.15000153 13.9990879,7.70228628 13.9990879,7.15000153 C13.9990879,6.59771678 13.5513727,6.15000153 12.9990879,6.15000153 L3.50594063,6.15000153 Z"
            transform="translate(7.084874, 7.092639) scale(-1, 1) translate(-7.084874, -7.092639) "></path>
    </symbol>
    <!-- 图标|左向箭头2 -->
    <symbol id="icoLeft2">
        <path
            d="M2.56507664,7.09086552 L7.5381691,12.063958 C7.92869339,12.4544823 7.92869339,13.0876472 7.5381691,13.4781715 C7.14764481,13.8686958 6.51447983,13.8686958 6.12395554,13.4781715 L0.467101288,7.82131729 C0.287321184,7.64153719 0.190303885,7.41033487 0.176049391,7.17505536 C0.145971879,6.88568746 0.241806749,6.58570828 0.463554001,6.36396103 L6.12040825,0.707106781 C6.51093254,0.316582489 7.14409752,0.316582489 7.53462181,0.707106781 C7.9251461,1.09763107 7.9251461,1.73079605 7.53462181,2.12132034 L2.56507664,7.09086552 Z">
        </path>
    </symbol>
    <!-- 图标|右向箭头2 -->
    <symbol id="icoRight2">
        <path
            d="M2.73310223,7.09086552 L7.70619469,12.063958 C8.09671898,12.4544823 8.09671898,13.0876472 7.70619469,13.4781715 C7.3156704,13.8686958 6.68250542,13.8686958 6.29198113,13.4781715 L0.635126876,7.82131729 C0.455346772,7.64153719 0.358329473,7.41033487 0.344074979,7.17505536 C0.313997467,6.88568746 0.409832337,6.58570828 0.631579589,6.36396103 L6.28843384,0.707106781 C6.67895813,0.316582489 7.31212311,0.316582489 7.7026474,0.707106781 C8.09317169,1.09763107 8.09317169,1.73079605 7.7026474,2.12132034 L2.73310223,7.09086552 Z"
            transform="translate(4.168887, 7.092639) scale(-1, 1) translate(-4.168887, -7.092639) "></path>
    </symbol>
    <!-- 图标|已收起的大纲节点 -->
    <symbol id="icoFolded">
        <rect fill="#D8D8D8" fill-opacity="0" height="20" id="Rectangle-3" width="16" x="0" y="0"></rect>
        <polygon fill="#555555" id="Triangle" points="9 6 14 14 4 14"
            transform="translate(9.000000, 10.000000) rotate(90.000000) translate(-9.000000, -10.000000) "></polygon>
    </symbol>
    <!-- 图标|已展开的大纲节点 -->
    <symbol id="icoUnfold">
        <rect fill="#D8D8D8" fill-opacity="0" height="20" id="Rectangle-3-Copy" width="16" x="0" y="0"></rect>
        <polygon fill="#555555" fill-opacity="0.5" id="Triangle-Copy" points="8 6 13 14 3 14"
            transform="translate(8.000000, 10.000000) scale(1, -1) translate(-8.000000, -10.000000) "></polygon>
    </symbol>
    <!-- 图标|关闭 -->
    <symbol id="icoClose">
        <path
            d="M7,7 L7,-1 C7,-1.55228475 7.44771525,-2 8,-2 C8.55228475,-2 9,-1.55228475 9,-1 L9,7 L17,7 C17.5522847,7 18,7.44771525 18,8 C18,8.55228475 17.5522847,9 17,9 L9,9 L9,17 C9,17.5522847 8.55228475,18 8,18 C7.44771525,18 7,17.5522847 7,17 L7,9 L-1,9 C-1.55228475,9 -2,8.55228475 -2,8 C-2,7.44771525 -1.55228475,7 -1,7 L7,7 Z"
            transform="translate(8.000000, 8.000000) rotate(45.000000) translate(-8.000000, -8.000000) "></path>
    </symbol>
    <!-- 图标|插图浏览器 -->
    <symbol id="icoFigure">
        <path
            d="M2,0 L15,0 C16.1045695,-2.02906125e-16 17,0.8954305 17,2 L17,12 C17,13.1045695 16.1045695,14 15,14 L2,14 C0.8954305,14 -1.13551567e-13,13.1045695 -1.13686838e-13,12 L-1.13686838e-13,2 C-1.13822108e-13,0.8954305 0.8954305,2.02906125e-16 2,0 Z M11,6 C12.1045695,6 13,5.1045695 13,4 C13,2.8954305 12.1045695,2 11,2 C9.8954305,2 9,2.8954305 9,4 C9,5.1045695 9.8954305,6 11,6 Z M2.03225639,10.5528128 C1.96084272,10.6932426 1.92361915,10.8485585 1.92361915,11.0061035 C1.92361915,11.5583883 2.3713344,12.0061035 2.92361915,12.0061035 L14.2120421,12.0061035 C14.4392714,12.0061035 14.6597254,11.9287155 14.8370963,11.7866848 C15.2681995,11.4414769 15.3378313,10.8121525 14.9926234,10.3810493 L12.9645536,7.84835144 C12.6449335,7.44920285 12.075683,7.35548344 11.6449719,7.63110012 L9.29545309,9.13458249 C9.28589453,9.14069912 9.27623255,9.14665259 9.26647134,9.15244033 C8.79141623,9.43411583 8.17796486,9.27735069 7.89628936,8.80229559 L6.14615975,5.85064382 C6.04943866,5.68752049 5.90832711,5.55526275 5.73928706,5.46929968 C5.247001,5.21895416 4.64497916,5.41508571 4.39463363,5.90737177 L2.03225639,10.5528128 Z M18,12.5 L18,2 C19.1045695,2 20,2.8954305 20,4 L20,15 C20,16.1045695 19.1045695,17 18,17 L4,17 C2.8954305,17 2,16.1045695 2,15 L15.5,15 C16.8807119,15 18,13.8807119 18,12.5 Z">
        </path>
    </symbol>
    <!-- 图标|非衬线字体样式 -->
    <symbol id="icoFont-sans">
        <path
            d="M18,16 L14.0598232,16 L12.4935418,12.2464833 L5.32290959,12.2464833 L3.84228416,16 L0,16 L6.98708362,0 L10.8171312,0 L18,16 Z M11.3310673,9.55987559 L8.8592794,3.62602064 L6.4364378,9.55987559 L11.3310673,9.55987559 Z"
            fill-rule="nonzero"></path>
    </symbol>
    <!-- 图标|衬线字体样式 -->
    <symbol id="icoFont-serif">
        <path
            d="M10.45,11.2169143 L4.4625,11.2169143 L3.75,12.8525809 C3.5166655,13.3978058 3.4,13.8480227 3.4,14.203245 C3.4,14.6741211 3.59166475,15.0210772 3.975,15.2441238 C4.20000112,15.3762995 4.75416225,15.4754298 5.6375,15.5415177 L5.6375,16 L0,16 L0,15.5415177 C0.608336375,15.4506469 1.10833138,15.2007559 1.5,14.7918372 C1.89166862,14.3829185 2.37499713,13.5382455 2.95,12.257793 L9.0125,0 L9.25,0 L15.3625,12.6295355 C15.9458363,13.9347709 16.4249981,14.7567265 16.8,15.0954268 C17.0833347,15.3515173 17.4833307,15.5002128 18,15.5415177 L18,16 L9.8,16 L9.8,15.5415177 L10.1375,15.5415177 C10.7958366,15.5415177 11.258332,15.4506482 11.525,15.2689066 C11.7083342,15.1367308 11.8,14.9467311 11.8,14.6989016 C11.8,14.5502038 11.7750002,14.3973779 11.725,14.2404192 C11.7083332,14.1660704 11.5833345,13.8562881 11.35,13.3110632 L10.45,11.2169143 Z M10.025,10.2619342 L7.5,4.49650206 L4.9,10.2619342 L10.025,10.2619342 Z"
            fill-rule="nonzero"></path>
    </symbol>
    <!-- 图标|图片墙 -->
    <symbol id="icoFigureGrid">
        <rect height="6" id="Rectangle-5" rx="1" width="6" x="0" y="0"></rect>
        <rect height="6" id="Rectangle-5-Copy" rx="1" width="6" x="8" y="0"></rect>
        <rect height="6" id="Rectangle-5-Copy-2" rx="1" width="6" x="16" y="0"></rect>
        <rect height="6" id="Rectangle-5-Copy-5" rx="1" width="6" x="0" y="8"></rect>
        <rect height="6" id="Rectangle-5-Copy-4" rx="1" width="6" x="8" y="8"></rect>
        <rect height="6" id="Rectangle-5-Copy-3" rx="1" width="6" x="16" y="8"></rect>
    </symbol>
    <!-- 图标|亮色模式 -->
    <symbol id="icoLightMode">
        <path
            d="M10.8333333,0.83333334 L10.8333333,2.5 C10.8333333,2.9602373 10.4602373,3.33333334 10,3.33333334 C9.5397627,3.33333334 9.16666666,2.9602373 9.16666666,2.5 L9.16666666,0.83333334 C9.16666666,0.373096045 9.5397627,8.45442195e-17 10,0 C10.4602373,-8.45442195e-17 10.8333333,0.373096045 10.8333333,0.83333334 Z M10,16.6666667 C9.5397627,16.6666667 9.16666666,17.0397627 9.16666666,17.5 L9.16666666,19.1666667 C9.16666666,19.626904 9.5397627,20 10,20 C10.4602373,20 10.8333333,19.626904 10.8333333,19.1666667 L10.8333333,17.5 C10.8333333,17.0397627 10.4602373,16.6666667 10,16.6666667 Z M2.92895834,2.92895834 C2.77266874,3.08523989 2.68486548,3.29720799 2.68486548,3.51822917 C2.68486548,3.73925035 2.77266874,3.95121845 2.92895834,4.1075 L4.1075,5.28604166 C4.43294529,5.61148694 4.96059636,5.61148694 5.28604165,5.28604165 C5.61148694,4.96059636 5.61148694,4.43294529 5.28604166,4.1075 L4.1075,2.92895834 C3.95121845,2.77266874 3.73925035,2.68486548 3.51822917,2.68486548 C3.29720799,2.68486548 3.08523989,2.77266874 2.92895834,2.92895834 Z M14.7139583,14.7139583 C14.3886401,15.0393749 14.3886401,15.5668751 14.7139583,15.8922917 L14.7139583,15.8925 L15.8925,17.0710417 C16.1030262,17.2815679 16.4098748,17.3637877 16.6974589,17.2867298 C16.985043,17.2096718 17.2096718,16.985043 17.2867298,16.6974589 C17.3637877,16.4098748 17.2815679,16.1030262 17.0710417,15.8925 L15.8925,14.7139583 C15.7362456,14.5576177 15.5242673,14.4697791 15.3032292,14.4697791 C15.082191,14.4697791 14.8702128,14.5576177 14.7139583,14.7139583 Z M0,10 C5.6362813e-17,10.4602373 0.373096045,10.8333333 0.83333334,10.8333333 L2.5,10.8333333 C2.9602373,10.8333333 3.33333334,10.4602373 3.33333334,10 C3.33333334,9.5397627 2.9602373,9.16666666 2.5,9.16666666 L0.83333334,9.16666666 C0.373096045,9.16666666 5.6362813e-17,9.5397627 0,10 Z M16.6666667,10 C16.6666667,10.4602373 17.0397627,10.8333333 17.5,10.8333333 L19.1666667,10.8333333 C19.626904,10.8333333 20,10.4602373 20,10 C20,9.5397627 19.626904,9.16666666 19.1666667,9.16666666 L17.5,9.16666666 C17.0397627,9.16666666 16.6666667,9.5397627 16.6666667,10 Z M2.92895834,17.0710417 C3.08523989,17.2273313 3.29720799,17.3151345 3.51822917,17.3151345 C3.73925035,17.3151345 3.95121845,17.2273313 4.1075,17.0710417 L5.28583334,15.8925 C5.60509309,15.5660706 5.60221508,15.0435127 5.27937916,14.7206197 C4.95654324,14.3977267 4.43398579,14.3947563 4.1075,14.7139583 L2.92895834,15.8925 C2.77266874,16.0487816 2.68486548,16.2607497 2.68486548,16.4817708 C2.68486548,16.702792 2.77266874,16.9147601 2.92895834,17.0710417 Z M14.7139583,5.28604166 C15.0393749,5.61135993 15.5668751,5.61135993 15.8922917,5.28604166 L15.8925,5.28604166 L17.0710417,4.1075 C17.396487,3.78205471 17.396487,3.25440363 17.0710417,2.92895834 C16.7455964,2.60351305 16.2179453,2.60351305 15.8925,2.92895834 L14.7139583,4.1075 C14.5576177,4.26375444 14.4697791,4.4757327 14.4697791,4.69677083 C14.4697791,4.91780896 14.5576177,5.12978722 14.7139583,5.28604166 Z M15,10 C15,12.7614583 12.7614583,15 10,15 C7.23854166,15 5,12.7614583 5,10 C5,7.23854166 7.23854166,5 10,5 C12.7614583,5 15,7.23854166 15,10 Z"
            fill-rule="nonzero"></path>
    </symbol>
    <!-- 图标|深色模式 -->
    <symbol id="icoDarkMode">
        <path
            d="M4.1439375,12.4783274 C8.7496875,12.4783274 12.4801875,8.74489828 12.4801875,4.14181693 C12.4801875,2.62583206 12.045375,1.22347573 11.33775,0 C15.17625,1.10703459 18,4.60533142 18,8.800025 C18,13.8801213 13.8825,18 8.802,18 C4.6074375,18 1.107,15.1744742 0,11.3375418 C1.22625,12.0429388 2.628,12.4783274 4.1439375,12.4783274 Z M4.44974747,8.44974747 L3.74264069,10.2426407 L3.03553391,8.44974747 L1.24264069,7.74264069 L3.03553391,7.03553391 L3.74264069,5.24264069 L4.44974747,7.03553391 L6.24264069,7.74264069 L4.44974747,8.44974747 Z M8.39411255,4.39411255 L7.82842712,5.82842712 L7.2627417,4.39411255 L5.82842712,3.82842712 L7.2627417,3.2627417 L7.82842712,1.82842712 L8.39411255,3.2627417 L9.82842712,3.82842712 L8.39411255,4.39411255 Z M3.75269119,2.75269119 L3.32842712,3.82842712 L2.90416306,2.75269119 L1.82842712,2.32842712 L2.90416306,1.90416306 L3.32842712,0.828427125 L3.75269119,1.90416306 L4.82842712,2.32842712 L3.75269119,2.75269119 Z"
            fill-rule="nonzero"></path>
        <!--<path d="M12.3165,11.0918466 C8.2225,11.0918466 4.9065,7.77324291 4.9065,3.68161505 C4.9065,2.33407294 5.293,1.08753399 5.922,0 C2.51,0.984030751 0,4.09362793 0,7.82224445 C0,12.3378856 3.66,16 8.176,16 C11.9045,16 15.016,13.4884215 16,10.0778149 C14.91,10.7048345 13.664,11.0918466 12.3165,11.0918466 Z" fill-rule="nonzero"></path>-->
    </symbol>
    <!-- 图标|打印 -->
    <symbol id="icoPrint">
        <path
            d="M4,14.5853624 L4,13.1 C4,11.940202 4.96706494,11 6.16,11 L13.8666159,11 C15.0595509,11 16.0266159,11.940202 16.0266159,13.1 L16.0266159,15.9 C16.0266159,17.059798 15.0595509,18 13.8666159,18 L6.16,18 C4.96706494,18 4,17.059798 4,15.9 L4,15.9976431 L2.16,15.9976431 C0.96706494,15.9976431 1.59872116e-15,15.0491937 0,13.8792221 L0,7.1389097 C0,5.96893806 0.96706494,5.02048865 2.16,5.02048865 L4,5.02048865 L4,2.11842105 C4,0.948449412 4.96706494,-4.99842265e-15 6.16,-5.32907052e-15 L13.8362115,0.0715540871 C15.0291466,0.0715540871 15.9962115,1.0200035 15.9962115,2.18997514 L15.9962115,5.02048865 L17.84,5.02048865 C19.0329351,5.02048865 20,5.96893806 20,7.1389097 L20,14.3048246 C20,15.4747962 19.0329351,15.9976431 17.84,15.9976431 L16.04,15.9976431 L16.04,14.5853624 L17.84,14.5853624 C18.237645,14.5853624 18.56,14.2692126 18.56,13.8792221 L18.56,7.1389097 C18.56,6.74891915 18.237645,6.43276935 17.84,6.43276935 L2.16,6.43276935 C1.76235498,6.43276935 1.44,6.74891915 1.44,7.1389097 L1.44,13.8792221 C1.44,14.2692126 1.76235498,14.5853624 2.16,14.5853624 L4,14.5853624 Z M14.5562115,5.02048865 L14.5562115,2.18997514 C14.5562115,1.79998459 14.2338565,1.48383479 13.8362115,1.48383479 L6.16,1.4122807 C5.76235498,1.4122807 5.44,1.72843051 5.44,2.11842105 L5.44,5.02048865 L14.5562115,5.02048865 Z M16.2876042,9.4122807 L14.72,9.4122807 C14.322355,9.4122807 14,9.0961309 14,8.70614035 C14,8.3161498 14.322355,8 14.72,8 L16.2876042,8 C16.6852492,8 17.0076042,8.3161498 17.0076042,8.70614035 C17.0076042,9.0961309 16.6852492,9.4122807 16.2876042,9.4122807 Z M12.3475656,8 C12.7452107,8 13.0675656,8.3161498 13.0675656,8.70614035 C13.0675656,9.0961309 12.7452107,9.4122807 12.3475656,9.4122807 C11.9499206,9.4122807 11.6275656,9.0961309 11.6275656,8.70614035 C11.6275656,8.3161498 11.9499206,8 12.3475656,8 Z M6.16,12.4122807 C5.76235498,12.4122807 5.44,12.7256814 5.44,13.1122807 L5.44,15.9122807 C5.44,16.29888 5.76235498,16.6122807 6.16,16.6122807 L13.8666159,16.6122807 C14.2642609,16.6122807 14.5866159,16.29888 14.5866159,15.9122807 L14.5866159,13.1122807 C14.5866159,12.7256814 14.2642609,12.4122807 13.8666159,12.4122807 L6.16,12.4122807 Z"
            fill-rule="nonzero"></path>
    </symbol>
    <!-- 图标|新标签打开 -->
    <symbol id="icoNewTab">
        <path
            d="M14,1 L14,11 C14,11.5522847 13.5522847,12 13,12 C12.4477153,12 12,11.5522847 12,11 L12,3.47056275 L2.53553391,12.9350288 C2.14500961,13.3255531 1.51184464,13.3255531 1.12132034,12.9350288 C0.730796052,12.5445046 0.730796052,11.9113396 1.12132034,11.5208153 L10.6421356,2 L3,2 C2.44771525,2 2,1.55228475 2,1 C2,0.44771525 2.44771525,1.01453063e-16 3,0 L13,0 C13.5522847,-1.01453063e-16 14,0.44771525 14,1 Z">
        </path>
    </symbol>
    <!-- 图标|聚光灯 -->
    <symbol id="icoSpotlight">
        <path
            d="M11.1949511,14.3025696 L9.89553711,18.0009016 C9.79558219,18.5006762 9.19585266,19.0004508 8.3962133,19.4002705 C7.49661902,19.8000902 6.29715998,20 4.99774602,20 C3.69833205,20 2.49887301,19.8000902 1.59927873,19.4002705 C0.599729531,18.9004959 0,18.2008114 0,17.501127 C0,17.1013073 0.199909844,16.7014876 0.399819687,16.4016229 L8.59612314,7.40568004 L10.8950863,4.90680703 L15.093193,0.208925781 C15.2931028,0.0090159375 15.5929676,0.00901595703 15.7928774,0.108970859 C15.9927872,0.208925762 16.0927422,0.508790527 15.9927872,0.708700371 L13.4939142,7.90545465 L11.1949511,14.3025696 Z M11.7640774,15.7965261 L14.2708176,8.82245531 L19.5911644,15.1022089 C19.8910291,15.4020737 19.9909841,15.8018933 19.9909841,16.0018032 C19.9909841,16.4016229 19.7910742,17.0013524 18.6915701,17.501127 C17.8919307,17.8009918 16.9923364,18.0009016 15.9927872,18.0009016 C14.993238,18.0009016 13.9936888,17.8009918 13.2940044,17.6010819 C12.3944101,17.2012622 12.0945454,16.8014426 11.9945904,16.4016229 L11.7640774,15.7965261 Z M8.17832315,6.3290416 L5.99729521,0.708700371 C5.89734029,0.508790547 5.89734029,0.308880703 6.19720506,0.108970859 C6.49706982,-0.0909389844 6.69697967,0.0090159375 6.89688951,0.208925781 L10.218134,4.11138806 L8.17832315,6.3290416 Z M7.99639363,18.5006762 C8.59612314,18.2008114 8.99594283,17.9009467 8.99594283,17.501127 C8.99594283,17.1013073 8.59612316,16.8014426 7.99639363,16.5015778 C7.19675426,16.201713 6.09725016,16.0018032 4.99774602,16.0018032 C3.89824188,16.0018032 2.79873775,16.201713 1.9990984,16.5015778 C1.39936889,16.8014426 0.999549199,17.1013073 0.999549199,17.501127 C0.999549199,17.9009467 1.39936887,18.2008114 1.9990984,18.5006762 C2.79873777,18.800541 3.89824188,19.0004508 4.99774602,19.0004508 C6.09725016,19.0004508 7.19675428,18.800541 7.99639363,18.5006762 Z M12.9941396,16.0018032 C12.9940532,16.3589269 13.5655733,16.6889352 14.4933936,16.8675054 C15.4212139,17.0460756 16.5643606,17.0460756 17.4921809,16.8675054 C18.4200012,16.6889352 18.9915213,16.3589269 18.9914349,16.0018032 C18.9915213,15.6446794 18.4200012,15.3146712 17.4921809,15.136101 C16.5643606,14.9575308 15.4212139,14.9575308 14.4933936,15.136101 C13.5655733,15.3146712 12.9940532,15.6446794 12.9941396,16.0018032 Z"
            fill-rule="nonzero"></path>
    </symbol>
</svg>

<!-- 大纲面板 -->
<div class="mdx-mask mdx-backdrop-blurs">
    <div class="mdx-copyright"><a href="https://github.com/MadMaxChow/VLOOK" target="_blank"><strong>VLOOK™</strong></a> (V9.2) for <a href="https://www.typora.io" target="_blank">Typora</a> | by <strong>Max</strong></div>
</div>
<div class="mdx-toc-box">
    <div class="mdx-toc-box-header">
        <div class="mdx-toc-box-title" onclick="gotoTop(); hideOutline();">大纲</div>
    </div>
    <div class="mdx-toc-box-body-scroll">
        <div class="mdx-toc-box-body" id="toc-box-body"></div>
    </div>
    <div class="mdx-toc-box-footer">
    </div>
</div>

<!-- click进的泡泡 -->
<div class="mdx-click-bubble"></div>

<!-- 面包屑导航栏 -->
<div class="mdx-bread-nav mdx-backdrop-blurs">
    <!-- 上一章 -->
    <div class="mdx-nav-prev" onclick="gotoHeader($('.mdx-nav-prev-text'))"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="15px" style="position: absolute; top: 18px; left: 10px; cursor: pointer;" width="10px">
            <use class="mdx-svg-ico-light" xlink:href="#icoLeft2"></use>
            prev
        </svg>
        <div class="mdx-nav-prev-text"></div>
    </div>
    <div class="mdx-bread-nav-text" onmouseenter="showToolTips($(this).attr('tips'), $(this), 'center')"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)"></div>
    <!-- 下一章 -->
    <div class="mdx-nav-next" onclick="gotoHeader($('.mdx-nav-next-text'))"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), 'right')"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <div class="mdx-nav-next-text">next</div>
        <svg height="15px" style="position: absolute; top: 18px; right: 10px; cursor: pointer;" width="10px">
            <use class="mdx-svg-ico-light" xlink:href="#icoRight2"></use>
            next
        </svg>
    </div>
</div>

<!-- 插图浏览器 -->
<div class="mdx-figure-viewer mdx-backdrop-blurs">
    <div class="mdx-figure-content"></div>
    <div class="mdx-figure-pagenum"></div>
    <div class="mdx-btn mdx-btn-prev-figure" onclick="prevFigure()">
        <svg height="15px" width="15px">
            <use class="mdx-svg-ico-light" xlink:href="#icoLeft"></use>
        </svg>
    </div>
    <div class="mdx-btn mdx-btn-next-figure" onclick="nextFigure()">
        <svg height="15px" width="15px">
            <use class="mdx-svg-ico-light" xlink:href="#icoRight"></use>
        </svg>
    </div>
    <div class="mdx-btn mdx-btn-close-figure-viewer" onclick="hideFigureViewer()">
        <svg height="16px" width="16px">
            <use class="mdx-svg-ico-light" xlink:href="#icoClose"></use>
        </svg>
    </div>
    <div class="mdx-copyright"><a href="https://github.com/MadMaxChow/VLOOK" target="_blank"><strong>VLOOK™</strong></a> (V9.2) for <a href="https://www.typora.io" target="_blank">Typora</a> | by <strong>Max</strong></div>
</div>

<!-- 页面工具栏 -->
<div class="mdx-toolbar mdx-backdrop-blurs">
    <!-- 大纲按钮 -->
    <div class="mdx-btn mdx-btn-outline" onclick="toggleOutline()"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="14px" id="svgOutline" width="20px">
            <use class="mdx-svg-ico-light" xlink:href="#icoOutline"></use>
        </svg>
    </div>
    <!-- 返回按钮 -->
    <div class="mdx-btn mdx-btn-nav-back" onclick="navBack()">
        <svg height="15px" width="15px">
            <use class="mdx-svg-ico-light" xlink:href="#icoLeft"></use>
        </svg>
    </div>
    <!-- 前进按钮 -->
    <div class="mdx-btn mdx-btn-nav-forward" onclick="navForward()">
        <svg height="15px" width="15px">
            <use class="mdx-svg-ico-light" xlink:href="#icoRight"></use>
        </svg>
    </div>
    <!-- 启动插图浏览器 -->
    <div class="mdx-btn mdx-btn-figure-launcher" onclick="showFigureViewer(null)"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="17px" width="20px">
            <use class="mdx-svg-ico-light" xlink:href="#icoFigure"></use>
        </svg>
    </div>
    <!-- 打印 -->
    <div class="mdx-btn mdx-btn-print" onclick="printDocument()" onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
         onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="20px" width="20px">
            <use class="mdx-svg-ico-light" xlink:href="#icoPrint"></use>
        </svg>
    </div>
    <!-- 开关聚光灯 -->
    <div class="mdx-btn mdx-btn-spotlight" onclick="toggleSpotlight()"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="20px" width="20px">
            <use class="mdx-svg-ico-light" xlink:href="#icoSpotlight"></use>
        </svg>
    </div>
    <!-- 字体样式 -->
    <div class="mdx-btn mdx-btn-font-style" onclick="toggleFontStyle()"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="18px" width="16px">
            <use class="mdx-svg-ico-light" xlink:href="#icoSerifFont"></use>
        </svg>
    </div>
    <!-- Light/Dark模式切换 -->
    <div class="mdx-btn mdx-btn-color-scheme" onclick="toggleColorShmeme()"
        onmouseenter="showToolTips($(this).attr('tips'), $(this), null)"
        onmouseleave="hideTips($('.mdx-tool-tips'), false)">
        <svg height="20px" width="20px">
            <use class="mdx-svg-ico-light" xlink:href="#icoLightMode"></use>
        </svg>
    </div>
</div>

<!-- 脚注弹层 -->
<div class="mdx-footer-note">
    <div class="mdx-footer-note-content"></div>
    <div class="mdx-footer-note-header"></div>
    <div class="mdx-footer-note-toolbar"><a onclick="gotoFooterArea()">查看所有脚注 ▶</a></div>
    <a name="xFooterArea"></a>
</div>

<!-- 插图浮动工具栏 -->
<div class="mdx-btn mdx-figure-action" onclick="openContentInNewTab()" onmouseout="outFigureAction()">
    <svg height="14px" width="14px">
        <use class="mdx-svg-ico-light" xlink:href="#icoNewTab"></use>
    </svg>
</div>

<!-- 聚光灯 -->
<div class="mdx-spotlight"></div>

<!-- 提示信息 -->
<div class="mdx-tool-tips mdx-float-card mdx-backdrop-blurs"></div>
<div class="mdx-info-tips mdx-float-card mdx-backdrop-blurs" onclick="hideTips($('.mdx-info-tips'), true)"></div>

<!-- 表格十字光标 -->
<div class="mdx-table-cross mdx-table-cross-left">&nbsp;</div>
<div class="mdx-table-cross mdx-table-cross-right">&nbsp;</div>
<div class="mdx-table-cross mdx-table-cross-up">&nbsp;</div>
<div class="mdx-table-cross mdx-table-cross-down">&nbsp;</div>

<script type="text/javascript">
    const _version = "V9.2", // 版本信息
        _animateSpeed = 200, // 动画速度，值越小越快
        _icoFold =
            '<svg width="16px" height="16px"><use xlink:href="#icoFolded" class="mdx-svg-ico-dark"/></svg>', // 大纲章节图标：已收起
        _icoUnfold =
            '<svg width="16px" height="16px"><use xlink:href="#icoUnfold" class="mdx-svg-ico-dark"/></svg>', // 大纲章节图标：已展开
        _smallScreenWidth = 1000, // 大小屏分界的尺寸标准
        _reboundOffset = 10, // 动画回弹效果偏移量
        _defaultImage =
            ""; // 默认图片的元数据（BASE64编码）
    let _enableBlockFocus = false, // 是否已激活内容块聚焦模式
        _spotlightX, _spotlightY, // 用于聚光灯功能，记录鼠标当前位置
        _spotlightR = 180, // 聚光灯半径
        _currentFontStyle = null, // 记录当前字体样式，sans：非衬线，serif：衬线
        _headers = [], // 标题数据，用于构建大纲
        _foldItem = [], // 收起/展开大纲节点数据，用于构建大纲
        _lastCurrentHeaderIndex = -2, // 当前标题索引号，用于在大纲页面中自动跟踪当前标题
        _lastOutlineItem = null, // 大纲内最后一次高亮章节项
        _lastHeaderLevel = 0, // 最后标题层级，用于构建大纲
        _lastHeaderFolder = null, // 最后标题收起/展开节点，用于构建大纲
        _lastCrossTable = null, // 最后/当前显示十字光标的表格
        _lastCrossCell = null, // 最后/当前显示十字光标的表格单元格
        _outlineShowed = false, // 大纲页面是否显示的标记
        _figureCount = 0, // 插图总数
        _lastHoverContent = false, // 最后显示新标签打开按钮的内容（插图/表格等）
        _lastBlockFocusItem = null, // 最后的聚焦内容块
        _blockFocusItemIndex = -1, // 当前聚焦内容块索引
        _blockFocusItemCount = 0, // 聚焦内容块总数
        _figIndex = -1, // 插图索引
        _colorScheme = "light", // Light/Dark模式
        _colorSchemeBeforePrint = _colorScheme,
        _tipsTimer, // 用于自动控制提示显示时长
        _lang = 0; // 当前语言（浏览器中的语言配置）

    /**
     * 获得设备的DPR值
     */
    function getDPR() {
        return ;
    }
    
    /**
     * 检查页内链接坏链
     */
    function checkInnerBadLink() {
        let count = 0;
        let badLink = "";
        $("a[href^='#']").each(function () {
            var href = $(this).attr("href");
            // 有效的页内链接的前缀为以下条件
            if (href == "#") {
                count++;
                badLink += ["无效页内链接 [",
                        "無效頁內鏈接 [",
                        "Invalid Inner Link [",
                        "Lien de page non valide [",
                        "Недопустимая ссылка на страницу [",
                        "ページリンクが無効です[",
                        "잘못된 페이지 링크["
                    ][_lang] +
                    count + "]：" + $(this).text() + " ----- " + $(this).parent().text() + "\n";
                console.error(["无效页内链接 [",
                        "無效頁內鏈接 [",
                        "Invalid Inner Link [",
                        "Lien de page non valide [",
                        "Недопустимая ссылка на страницу [",
                        "ページリンクが無効です [",
                        "잘못된 페이지 링크 ["
                    ][_lang] +
                    count + "]：" + $(this).text() + " ----- " + $(this).parent().text());
            }
        });
        // 显示无效链接信息
        if (badLink.length > 0)
            alert(badLink);
    }

    /**
     * 检查重名的Header
     */
    function checkDuplicateHeader() {
        let h = [];
        $(":header").each(function (i, n) {
            h.push($(n).text());
        });
        let dupHeaders = [];
        const ignoreHeaders = "业务规则,通用的业务规则,用户界面与交互,通用的用户界面与交互,页面流程,业务主流程,流程图,状态图,数据接入";
        for (let i in h) {
            for (let k in h) {
                if (i != k && h[i] == h[k] &&
                    ignoreHeaders.indexOf(h[k]) < 0)
                    dupHeaders.push(h[i]);
            }
        }
        // 输出警告信息
        for (let i in dupHeaders)
            console.warn(["重名的标题 [",
                    "重複的標題 [",
                    "Duplicate Header [",
                    "Titre en double [",
                    "Дублирующее название [",
                    "重複するタイトル [",
                    "중복 제목 ["
                ][_lang] +
                i + "]：" + dupHeaders[i]);
    }

    /**
     * 检查是否为空对象
     */
    function isEmptyObject(obj) {
        return (typeof (obj) == "undefined");
    }

    /**
     * 以指定字符开始
     */
    String.prototype.startWith = function (s) {
        if (s == null || s == "" || this.length == 0 || s.length > this.length)
            return false;
        return this.substr(0, s.length) == s;
    }
    /**
     * 以指定字符结束
     */
    String.prototype.endWith = function (s) {
        if (s == null || s == "" || this.length == 0 || s.length > this.length)
            return false;
        return this.substring(this.length - s.length) == s;
    }

    /**
     * 隐藏大纲（异常情况使用）
     */
    function hideOutlineOnError() {
        $(".mdx-toc-box").hide();

        console.error(["文档中没有找到目录信息，请用Typora最新版本导出，并应用最新VLOOK插件",
            "文檔中沒有找到目錄信息，請用Typora最新版本導出，並應用最新VLOOK插件",
            "No [TOC] information was found in the document, export it with the latest version of Typora and apply the latest VLOOK plug-in.",
            "Les informations du répertoire ne figurent pas dans la documentation, veuillez les exporter avec la dernière version de Typora et appliquer le dernier plug-in VLOOK.",
            "Информация в каталоге не найдена в документации, пожалуйста, экспортируйте ее с последней версией Typora и примените последний плагин VLOOK",
            "ドキュメントにディレクトリ情報が見つからない場合は、Typoraの最新バージョンでエクスポートし、最新のVLOOKプラグインを適用してください",
            "설명서에 디렉토리 정보가 없으므로 Typora 최신 버전으로 내보내고 최신 VLOOK 플러그인을 적용하십시오."
        ][_lang]);
    }

    /**
     * 为Outline中子元素添加附加属性和事件
     */
    function initOutlineData() {
        // 提取文档中由[toc]标签生成的文档目录作为浮动outline中的内容
        let t = $(".md-toc");
        // 没有生成目录
        if (isEmptyObject(t)) {
            hideOutlineOnError();
            return false;
        }

        // 有生成目录
        let toc = $(".mdx-toc-box-body");
        // 复制toc内容
        toc.append(t.clone()); // 复制toc模式
        t.hide();

        let tocContent = $(".md-toc-content");
        // 没有目录内容
        if (isEmptyObject(tocContent)) {
            hideOutlineOnError();
            return false;
        }
        // 有目录内容
        tocContent.children().each(function () {
            let item = $(this);
            // 只处理h1-h5，忽略h6
            if (item.attr("class").indexOf("-h6") == -1) {
                // 将目录记录到标题数组中
                let href = item.children().attr("href");
                _headers.push(href.indexOf("#") > -1 ? href.substr(1, href.length) : href);
                item.css("cursor", "pointer"); // 添加鼠标形状
                // 自定义大纲节点元数据
                item.attr({
                    "id": "oli-header-" + item.attr("data-ref"), // 添加id属性
                    "data-node": "0", // 添加节点类型：0:叶子节点, 1:目录节点
                    "data-folding": "1", // 添加节点状态：0:收起, 1:展开
                    "title": item.find("a").text().trim()
                });
                // 所有大纲节点都添加folding空白控件备用
                $("<div id='fd-oli-header-" + item.attr("data-ref") + "' class='mdx-folder'>&nbsp;</div>")
                    .insertBefore(item.find("a"));
                // 点击大纲节点事件
                item.click(function () {
                    hideOutline();
                    location.href = "#header-" + item.attr("data-ref");
                });

                // 记录所有非叶子节点的folder控件
                if (_lastHeaderFolder != null) {
                    // 当前节点比上一个节点层级低，则上一节点为可折叠的节点
                    if (getCSSHeaderLevel(item) > _lastHeaderLevel) {
                        _foldItem.push(_lastHeaderFolder);
                    }
                }
                // 更新最后处理的folder控件
                _lastHeaderFolder = $("#fd-oli-header-" + item.attr("data-ref"));
                _lastHeaderLevel = getCSSHeaderLevel(item);
            }
        });
        return true;
    }

    /**
     * 初始化内容块聚焦模式
     */
    function initBlockFocus() {
        // 先清理多余的段落标签
        $("li > p:only-child").contents().unwrap();

        $("h1, h2, h3, h4, h5, h6, ul > li, ol > li, p[class!=md-toc-content], .md-fences, figure, .md-diagram-panel, .MathJax_SVG_Display").each(function () {
            let item = $(this);
            // 跳过子元素有嵌套p的情况，如li > p
            if (item.children("p").length == 0) {
                item.attr("id", "mdx-blockfocus-" + _blockFocusItemCount);
                item.attr("mdx-blockfocus-index", _blockFocusItemCount);
                // 双击内容块激活内容块聚焦模式
                item.dblclick(function () {
                    _enableBlockFocus = !_enableBlockFocus;
                    if (_enableBlockFocus == true)
                        item.click();
                });
                // 单击内容块处理
                item.click(function () {
                    if (_enableBlockFocus == false)
                        return;

                    if (isFallInCrossTable($(this)) == false)
                        hideTableCross();

                    _blockFocusItemIndex = $(this).attr("mdx-blockfocus-index");

                    // 若已显示则隐藏
                    if (_lastBlockFocusItem != null && _lastBlockFocusItem.attr(
                            "mdx-blockfocus-index") == _blockFocusItemIndex)
                        hideBlockFocus();
                    else if (isFallInCrossTable($(this)) == false) {
                        gotoBlockFocusItem($(this), false);
                        event.stopPropagation(); // 停止事件冒泡
                    }
                });
                _blockFocusItemCount++;
            }
        });

        $(".md-toc-content").each(function () {
            let item = $(this);
            item.removeAttr("id");
            item.removeAttr("mdx-blockfocus-index");
            item.unbind("click");
        });
    }

    /**
     * 判断当前内容块是否与已显示了十字光标的表格重叠
     */
    function isFallInCrossTable(obj) {
        return (_lastCrossTable != null && obj.children().attr("id") == _lastCrossTable.attr("id"));
    }

    /**
     * 跳到指定的内容块，或最新的_blockFocusItemIndex指定的内容块
     */
    function gotoBlockFocusItem(it, jump) {
        hideBlockFocus();

        let item = $("#mdx-blockfocus-" + _blockFocusItemIndex);
        if (it != null)
            item = it;
        item.addClass("mdx-current-blockfocus-item");
        _lastBlockFocusItem = item;

        // 显示工具栏新手提示：内容块聚焦
        if (window.localStorage && localStorage["VLOOK-" + _version + "-hint-for-green-hand-step-bf"] == undefined) {
            showInfoTips([
                    "<strong>已激活内容聚焦模式</strong><br>鼠标直接点击内容，或键盘操作：<div style='text-align:left'><kbd>J</kbd> - 下一个<br><kbd>K</kbd> - 上一个<br><kbd>H</kbd> - 往回跳十个<br><kbd>L</kbd> - 往后跳十个<br><kbd>ESC</kbd> - 隐藏聚焦</div>",
                    "<strong>激活的內容聚焦模式</strong><br>鼠標點擊內容或鍵盤操作：<div style='text-align:left'><kbd>J</kbd>下一個<br><kbd>K</kbd>上一個<br><kbd>H</kbd>往前跳十個<br><kbd>L</kbd>往後跳十個<br><kbd>ESC</kbd> - 隱藏聚焦</div>",
                    "<strong>Activated Content Focus Mode</strong><br>Mouse click on the content, or keyboard operation:<div style='text-align:left'><kbd>J</kbd> - Next<br><kbd>K</kbd> - Previous<br><kbd>H</kbd> - Jump up ten<br><kbd>L</kbd> - Jump ten<br><kbd>ESC</kbd> - Hide focus</div>",
                    "<strong>Mode de focus du contenu activé</strong><br>Cliquez sur le contenu ou sur le clavier:<div style='text-align:left'><kbd>J</kbd> - Suivant<br><kbd>K</kbd> - Précédent<br><kbd>H</kbd> - Saut dix en avant<br><kbd>L</kbd> - Saut dix en arrière<br><kbd>ESC</kbd> - Masquer le focus</div>",
                    "<strong>Активированный режим фокусировки содержимого</strong><br>Щелчок мышью по содержимому или операции с клавиатурой:<div style='text-align:left'><kbd>J</kbd> - Далее<br><kbd>K</kbd> - Предыдущий<br><kbd>H</kbd> - Прыгай десять вперед<br><kbd>L</kbd> - прыгай десять назад<br><kbd>ESC</kbd> - Скрыть фокус</div>",
                    "<strong>アクティブコンテンツフォーカスモード</strong><br>コンテンツをマウスでクリックするかキーボード操作をします。<div style='text-align:left'><kbd>J</kbd> - 次へ<br><kbd>K</kbd> - 前へ<br><kbd>H</kbd> - 10ジャンプします<br><kbd>L</kbd> - 10ジャンプ<br><kbd>ESC</kbd> - フォーカスを隠す</div>",
                    "<strong>활성 컨텐츠 포커스 모드</strong><br>내용을 마우스로 클릭하거나 키보드 조작:<div style='text-align:left'><kbd>J</kbd> - 다음<br><kbd>K</kbd> - 이전<br><kbd>H</kbd> - 앞으로 10 칸 이동하십시오<br><kbd>L</kbd> - 점프 10 뒤로<br><kbd>ESC</kbd> - 포커스 숨기기</div>"
                ][_lang],
                10000, false);
            localStorage["VLOOK-" + _version + "-hint-for-green-hand-step-bf"] = true;
        }

        if (jump == true &&
            item.offset().top != 0 &&
            ((item.offset().top - 50) < $(document).scrollTop() ||
                (item.offset().top + 50) > ($(document).scrollTop() + $(window).height()))) {
            $('html,body').animate({
                scrollTop: item.offset().top - $(window).height() / 2
            }, _animateSpeed);
        }
    }

    /**
     * 上一个内容块item
     */
    function prevBlockFocusItem(step) {
        hideTableCross();
        if (_blockFocusItemIndex > 0) {
            _blockFocusItemIndex = parseInt(_blockFocusItemIndex) - step;
            if (_blockFocusItemIndex < 0)
                _blockFocusItemIndex = 0;
            gotoBlockFocusItem(null, true);
        }
    }

    /**
     * 下一个内容块item
     */
    function nextBlockFocusItem(step) {
        hideTableCross();
        if (_blockFocusItemIndex < _blockFocusItemCount - 1) {
            _blockFocusItemIndex = parseInt(_blockFocusItemIndex) + step;
            if (_blockFocusItemIndex > _blockFocusItemCount - 1)
                _blockFocusItemIndex = _blockFocusItemCount - 1;
            gotoBlockFocusItem(null, true);
        }
    }

    /**
     * 初始化表格数据
     */
    function initTable() {
        let colSpanCount = 0;
        let colSpanCell, lastCell = null;
        let tblData = [],
            tblSpan = [],
            tblTd2ThData = [];
        let rowIndex = 0,
            colIndex = 0;
        let needRowSpan = false;
        let tableIndex = 0;

        $("table").each(function () {
            // 新标签打开的按钮
            let table = $(this);
            // 表格索引号
            table.attr("id", "mdx-tbl" + tableIndex);
            table.hover(function () {
                // 鼠标移入显示
                showFigureAction(table);
            }, function () {
                // 鼠标移出隐藏
                hideFigureAction(table);
            });

            // 单元格处理
            table.find("tr").each(function () {
                tblData[rowIndex] = [];
                tblSpan[rowIndex] = [];
                $(this).find("td, th").each(function () {
                    let cell = $(this);

                    // --- 当前单元格十字高亮 ---
                    // 单元格行列索引号
                    cell.attr("mdx-col", "mdx-tbl" + tableIndex + "-" + colIndex);

                    // 鼠标点击单元格时显示十字光标
                    cell.click(function () {
                        hideTableCross();
                        hideBlockFocus();

                        _lastCrossCell = cell;
                        _lastCrossTable = table;

                        let tdH = parseInt(_lastCrossCell.css("height")),
                            tdW = parseInt(_lastCrossCell.css("width")),
                            tbW = parseInt(_lastCrossTable.css("width"));

                        // 横向左边
                        $(".mdx-table-cross-left").css({
                            "display": "block",
                            "top": _lastCrossCell.offset().top,
                            "left": _lastCrossTable.offset().left,
                            "height": tdH,
                            "width": _lastCrossCell.offset().left -
                                _lastCrossTable.offset().left,
                            "z-index": 9
                        });

                        // 横向右边
                        // $(".mdx-table-cross-right").css({"width": 0});
                        $(".mdx-table-cross-right").css({
                            "display": "block",
                            "top": _lastCrossCell.offset().top,
                            "left": _lastCrossCell.offset().left + tdW,
                            "height": tdH,
                            "width": _lastCrossTable.offset().left + tbW -
                                _lastCrossCell.offset().left - tdW,
                            "z-index": 9
                        });

                        // 竖向上边
                        $(".mdx-table-cross-up").css({
                            "display": "block",
                            "top": _lastCrossTable.offset().top,
                            "left": _lastCrossCell.offset().left,
                            "height": _lastCrossCell.offset().top -
                                _lastCrossTable.offset().top,
                            "width": tdW,
                            "z-index": 9
                        });

                        // 竖向下边
                        // $(".mdx-table-cross-down").css({"height": 0});
                        $(".mdx-table-cross-down").css({
                            "display": "block",
                            "top": _lastCrossCell.offset().top + tdH,
                            "left": _lastCrossCell.offset().left,
                            "height": _lastCrossTable.offset().top + parseInt(
                                    _lastCrossTable.css("height")) -
                                _lastCrossCell.offset().top - tdH,
                            "width": tdW,
                            "z-index": 9
                        });
                    });

                    // --- 行合并预处理 ---
                    // 克隆表格数据
                    tblData[rowIndex][colIndex] = cell;
                    tblSpan[rowIndex][colIndex] = 0;
                    // 行合并标记
                    if (cell.text() == "..") {
                        tblSpan[rowIndex][colIndex] = 1;
                        needRowSpan = true;
                    }
                    colIndex++;

                    // --- 列合并 ---
                    // 列合并标记
                    if (cell.text() == "==") {
                        colSpanCount++;
                        cell.remove();
                        if (colSpanCount == 1)
                            colSpanCell = lastCell;
                    } else { // 列合并
                        if (colSpanCount > 0) {
                            colSpanCell.attr("colspan", colSpanCount + 1);
                            colSpanCell.css("text-align", "center");
                        }
                        colSpanCount = 0;
                    }
                    lastCell = cell;
                }); // find(td, th)

                // 列合并（对于最后一列的补充处理）
                if (colSpanCount > 0) {
                    colSpanCell.attr("colspan", colSpanCount + 1);
                    colSpanCell.css("text-align", "center");
                }
                colSpanCount = 0;

                table.attr("mdx-cols", colIndex); // 表格列数
                rowIndex++;
                colIndex = 0;
            }); // tr

            // --- 统一整列格式 ---
            $(this).find("tr th").each(function () {
                if ($(this).find("strong").length > 0)
                    $("[mdx-col=" + $(this).attr("mdx-col") + "]").addClass("mdx-table-td-bold");
                else if ($(this).find("em").length > 0)
                    $("[mdx-col=" + $(this).attr("mdx-col") + "]").css("font-style", "italic");
                else if ($(this).find("u").length > 0)
                    $("[mdx-col=" + $(this).attr("mdx-col") + "]").css("text-decoration", "underline");
                else if ($(this).find("mark").length > 0)
                    $("[mdx-col=" + $(this).attr("mdx-col") + "]").contents().wrap("<mark></mark>");
                else if ($(this).find("del").length > 0)
                    $("[mdx-col=" + $(this).attr("mdx-col") + "]").contents().wrap("<del></del>");
            });

            rowIndex = 0;

            // 行合并
            if (needRowSpan == true) {
                tblTd2ThData = [];
                // 列式遍历（从左到右）
                for (let c = 0; c < tblSpan[0].length; c++) {
                    let rowSpanCount = 0,
                        rowSpanCell = null;
                    let r = 0,
                        thSpanFlag = false;

                    // 列式遍历（从上到下）
                    while (r < tblSpan.length) {
                        if (tblSpan[r][c] == 1) { // 要合并
                            rowSpanCount++;
                            // tblData[r][c].remove(); // 移除要被合并的单元格
                            if (rowSpanCell == null) {
                                rowSpanCell = tblData[r - 1][c];
                            }
                            // 记录最大列头行合并深度
                            if (r == 1)
                                thSpanFlag = true;
                            if (thSpanFlag == true)
                                tblTd2ThData[tblTd2ThData.length] = tblData[r][c].parent();
                            tblData[r][c].remove(); // 移除要被合并的单元格
                        } else {
                            thSpanFlag = false;
                            // 单元格行合并
                            if (rowSpanCell != null) {
                                rowSpanCell.attr("rowspan", rowSpanCount + 1);
                                rowSpanCount = 0;
                                rowSpanCell = null;
                            }
                        }
                        r++;
                    } // while
                    // 单元格行合并（对于最后一行的补充处理）
                    if (rowSpanCell != null) {
                        rowSpanCell.attr("rowspan", rowSpanCount + 1);
                        rowSpanCell.css("text-align", "center");
                    }
                } // for

                for (let i = 0; i < tblTd2ThData.length; i++) {
                    tblData[0][0].parent().parent().append(tblTd2ThData[i]);
                }
            } // if

            let figCaption = ["表.",
                "表.",
                "Table.",
                "Table.",
                "Таблица.",
                "テーブル.",
                "표."
            ][_lang] + (tableIndex + 1);
            // 有指定的图注文本
            let fc = getFigureCaption(table.parent().prev());
            if (fc != null && fc.trim().length > 0)
                figCaption = figCaption + " - " + fc;
            // 为插图增加图注
            table.wrap("<div id='tbl-num" + tableIndex + "' class='mdx-figure-alt'></div>");
            table.before("<span>" + figCaption + "</span>");

            tableIndex++;
            needRowSpan = false;
        }); // table
    }

    /**
     * 隐藏表格十字聚焦
     */
    function hideTableCross() {
        if (_lastCrossCell == null)
            return;

        $(".mdx-table-cross").hide();
        _lastCrossCell = null;
        _lastCrossTable = null;
    }

    /**
     * 初始化插图数据
     */
    function initFigureData() {
        let ignoreImgLost = false;
        $("img, .md-diagram-panel svg").each(function () {
            let fig = $(this);
            // 添加插图标识数据
            fig.attr({
                "fig-id": "mdx-figure-" + _figureCount,
                "fig-idx": _figureCount,
                "fig-type": fig.prop("tagName").toLowerCase()
            });
            // 添加插图样式
            fig.css("cursor", "pointer");
            fig.addClass("mdx-figure");

            // 添加锚点，便于在插图浏览器直接跳转至对应插图位置
            $("<a name='" + "fig-idx" + _figureCount + "'>").insertBefore(fig.parent());

            // 添加鼠标单击事件
            fig.click(function () {
                showFigureViewer(fig);
            });
            // 添加鼠标移入/移出事件
            fig.mouseenter(function () {
                showFigureAction(fig);
            });
            fig.mouseout(function () {
                hideFigureAction(fig);
            });

            let fc = null;
            // 图片插图的处理
            if (fig.attr("fig-type").toLowerCase() == "img") {
                fc = fig.attr("alt"); // 获取插图标题
                let src = fig.attr("src");
                // 图片无法加载时加载默认图片
                fig.bind("error", function () {
                    if (fig.attr("src").indexOf("vlook-lost-image.jpg") == -1)
                        if (ignoreImgLost == false)
                            ignoreImgLost = !confirm(["图片缺失：",
                                "圖片缺失：",
                                "Lost Image: ",
                                "Image perdue: ",
                                "Потерянное изображение: ",
                                "失われた画像：",
                                "잃어버린 이미지 : "
                            ][_lang] + fig.parent().text() + "\"" + fig.attr("src") + "\"" + [
                                "\n\n继续检查吗？",
                                "\n\n繼續檢查嗎？",
                                "\n\nContinue to check?",
                                "\n\nContinuer à vérifier?",
                                "\n\nПродолжить проверку?",
                                "\n\nチェックを続けますか？",
                                "\n\n계속 확인 하시겠습니까?"
                            ][_lang]);

                    loadDefaultImage($(this));
                });

                // 强制重新加载一次以触发error事件
                fig.attr("src", src);

                // 处理在 Dark Mode 指定反转的图片
                if (getQueryString(src.substring(src.indexOf("?"), src.length))["invert"] == "in-dark") {
                    // console.log(src + "invert in dark");
                    fig.attr("vlook-invert", "in-dark");
                }
            }
            // SVG插图的处理
            else if (fig.attr("fig-type").toLowerCase() == "svg") {
                // 获取插图标题
                fc = getFigureCaption(fig.parent().prev().prev());
            }

            let figCaption = ["图.",
                "圖.",
                "Figure.",
                "La figure.",
                "карта.",
                "図.",
                "그림."
            ][_lang] + (_figureCount + 1);

            // 有指定的图注文本
            if (fc != null && fc.trim().length > 0)
                figCaption = figCaption + " - " + fc;

            // 为插图增加图注
            fig.wrap("<div id='fig-num" + _figureCount + "' class='mdx-figure-alt'></div>");
            fig.before("<span>" + figCaption + "</span>");

            // 修正在SVG插图套上图注figure-alt后的自适应尺寸
            if (fig.attr("fig-type").toLowerCase() == "svg")
                fig.parent().css("width", "100%");

            _figureCount++;
        });
        if (_figureCount > 0)
            $(".mdx-btn-figure-launcher").css("visibility", "visible");
    }

    /**
     * 返回插图、表格上方H6的内容为图注或表注
     */
    function getFigureCaption(caption) {
        if (caption != null
            && caption.prop("tagName") != undefined
            && caption.prop("tagName").toLowerCase() == "h6")
            return caption.text();
        return null;
    }

    /**
     * 加载默认图片
     */
    function loadDefaultImage(fig) {
        fig.attr({
            "src-org": fig.attr("src"),
            "src": _defaultImage
        });
    }

    /**
     * 显示插图浏览器
     */
    function showFigureViewer(fig) {
        if (_figureCount == 0)
            return;
        if (_figIndex == -1)
            _figIndex = 0;
        if (fig == null)
            fig = $("[fig-id='mdx-figure-" + _figIndex + "']");

        let viewer = $(".mdx-figure-viewer");
        viewer.css({
            "top": viewer.css("height"),
            "opacity": 0
        });

        // 调整插图动作按钮层级
        let act = $(".mdx-figure-action");
        act.css("z-index", parseInt(act.css("z-index")) + parseInt(viewer.css("z-index")));

        hideFigureAction(null);

        // 在插图浏览器中显示对应插图
        _figIndex = fig.attr("fig-idx");

        viewer.show();
        viewer.animate({
                top: 0, // - _reboundOffset,
                opacity: 1
            },
            _animateSpeed,
            function () {
                showFigureContent();
                updateFigureViewerUI();
            });
    }

    /**
     * 关闭插图浏览器
     */
    function hideFigureViewer() {
        let viewer = $(".mdx-figure-viewer");
        viewer.animate({
            top: viewer.css("height"),
            opacity: 0
        }, _animateSpeed, function () {
            $(".mdx-figure-content").empty();
            viewer.hide();
        });

        // 调整插图动作按钮层级
        let act = $(".mdx-figure-action"),
            actIdx = parseInt(act.css("z-index")),
            viewerIdx = parseInt(viewer.css("z-index"))
        if (actIdx > viewerIdx)
            act.css("z-index", actIdx - viewerIdx);

        hideFigureAction(null);
        hideMask();
    }

    /**
     * 鼠标移出插件动作按钮
     */
    function outFigureAction() {
        if (mouseDropInObj(_lastHoverContent) == false)
            $(".mdx-figure-action").hide();
    }

    /**
     * 显示插图动作按钮
     */
    function showFigureAction(fig) {
        if (env.device.mobile)
            return;

        const radius = fig.css("border-top-left-radius");
        let act = $(".mdx-figure-action");
        act.hide();
        act.css({
            "left": fig.offset().left,
            "top": fig.offset().top,
            "border-top-left-radius": radius
        });

        act.fadeIn(_animateSpeed);
        _lastHoverContent = fig;
    }

    /**
     * 隐藏插图动作按钮
     */
    function hideFigureAction(fig) {
        if (fig == null || mouseDropInObj(fig) == false)
            $(".mdx-figure-action").fadeOut(_animateSpeed);
    }

    /**
     * 在新标签页中打开插图/表格等内容
     */
    function openContentInNewTab() {
        if (_lastHoverContent == null)
            return;

        const bgColor = $("body").css("background-color"),
            fgColor = $("body").css("color");

        // ondblclick, onmousemove, onkeydown中的代码须使用原生javascipt
        let newTab = window.open("", "_blank"),
            baseContent = "<body" +
            " onmousemove=\"if (document.getElementsByClassName('mdx-spotlight')[0].style.display=='block'){var e = window.event;document.documentElement.style.setProperty('--spotlightX', e.clientX);document.documentElement.style.setProperty('--spotlightY', e.clientY);}\"" +
            " onkeydown='var code = event.keyCode||event.which||event.charCode;if (code == 27) document.getElementsByClassName(\"mdx-spotlight\")[0].style.display=\"none\"; if (code != 83) return; var obj=document.getElementsByClassName(\"mdx-spotlight\")[0];if(obj.style.display==\"block\"){obj.style.display=\"none\"}else{obj.style.display=\"block\";var e=window.event;document.documentElement.style.setProperty(\"--spotlightX\",e.clientX);document.documentElement.style.setProperty(\"--spotlightY\",e.clientY);document.documentElement.style.setProperty(\"--spotlightR\",180);}'" +
            " class='typora-export' style='min-height:100vh; color:" + fgColor + "; background-color:" + bgColor +
            "'><div class='mdx-spotlight'></div>" +
            "<div id='write' class='is-mac' style='margin-left: 0;'>",
            caption = "";

        newTab.document.write("<!doctype html>");
        newTab.document.write($("html").html());

        newTab.document.title = _lastHoverContent.prev().text();

        // 图片
        if (_lastHoverContent.attr("fig-type") == "img") {
            let newObj = _lastHoverContent.clone();
            newObj.css({
                "border-radius": "15px"
            });

            newTab.document.body.outerHTML = baseContent +
                newObj.prop("outerHTML") + "</div></div></body>";
        }
        // mermaid / flow.js等SVG图
        else if (_lastHoverContent.attr("fig-type") == "svg") {
            let newObj = _lastHoverContent.clone();
            newObj.css({
                "border-radius": "15px"
            });

            newTab.document.body.outerHTML = baseContent + "<div class='md-diagram-panel'>" +
                newObj.prop("outerHTML") + "</div></div></body>";
        }
        // 表格
        else if (_lastHoverContent.prop("tagName").toLowerCase() == "table") {
            let newObj = _lastHoverContent.clone();
            newTab.document.body.outerHTML = baseContent + "<h1 style='display:none'>" + ["表格", "table", "Table", "table",
                    "table"
                ][_lang] + "</h1><figure>" +
                newObj.prop("outerHTML") + "</figure></div></div></body>";
        }

        // 初始化新标签页面
        newTab.initVLOOK(_colorScheme);
        
        newTab.adjustColorScheme();
        newTab.adjustImageInverInDarkMode();

        newTab.updateFigureAlt(newTab.document.title);
    }

    /**
     * 更新插图的图注、表注（用于在新标签打开插图、表格后的强制更新对应内容）
     */
    function updateFigureAlt(caption) {
        $(".mdx-figure-alt > span").text(caption);
    }

    /**
     * 鼠标光标落入指定对象范围内
     */
    function mouseDropInObj(obj) {
        let e = window.event;
        const mx = e.pageX || e.clientX + document.body.scrollLeft;
        const my = e.pageY || e.clientY + document.body.scrollTop;
        if (mx < obj.offset().left || mx > (obj.offset().left + obj.width()) ||
            my < obj.offset().top || my > (obj.offset().top + obj.height()))
            return false;
        return true;
    }

    /**
     * 显示插图内容
     */
    function showFigureContent() {
        let fig = $("[fig-id=mdx-figure-" + _figIndex + "]"),
            content = $(".mdx-figure-content");
        content.empty();
        content.show();
        content.css({
            "width": $(window).width(),
            "height": $(window).height()
        });

        let newObj = fig.clone();
        newObj.css({
            "max-width": $(window).width() - 90,
            "max-height": $(window).height() - 90,
            "display": "inline-block",
            "cursor": "pointer",
            "border-radius": "15px",
        });
        newObj.click(function () {
            gotoFigure();
            hideFigureViewer();
        });
        content.append(newObj);

        newObj.mouseenter(function () {
            showFigureAction(newObj);
        });
        newObj.mouseout(function () {
            hideFigureAction(newObj);
        });
    }

    /**
     * 查看上一个插图
     */
    function prevFigure() {
        if (_figIndex > 0) {
            _figIndex--;
            hideFigureAction();
            showFigureContent();
            updateFigureViewerUI();
        }
    }

    /**
     * 查看下一个插图
     */
    function nextFigure() {
        if (_figIndex < _figureCount - 1) {
            _figIndex++;
            hideFigureAction();
            showFigureContent();
            updateFigureViewerUI();
        }
    }

    /**
     * 更新插图浏览器界面
     */
    function updateFigureViewerUI() {
        let btnPrev = $(".mdx-btn-prev-figure");
        let btnNext = $(".mdx-btn-next-figure");
        let pageNum = $(".mdx-figure-pagenum");
        let viewer = $(".mdx-figure-viewer");

        // 更新插图页码
        var title = ["(共",
            "(共",
            "(Total ",
            "(Totale ",
            "(Всего ",
            "(合計",
            "(합계"
        ][_lang] + _figureCount + ["张) ",
            "張) ",
            ") ",
            ") ",
            ") ",
            "張) ",
            "장) "
        ][_lang];
        title += "<strong>" + $("#fig-num" + _figIndex + " > span").text() + "</strong>";
        pageNum.css("width", (viewer.width()) - 60);
        pageNum.html(title);

        // 更新导航按钮位置
        btnPrev.css("top", (viewer.height() - 30) / 2);
        btnNext.css({
            "top": btnPrev.css("top"),
            "right": "10px"
        });

        // 根据当前插图索引更新浏览按钮有效状态
        btnPrev.css("opacity", "0");
        btnNext.css("opacity", "0");
        if (_figIndex > 0) {
            btnPrev.css("opacity", "1");
        }
        if (_figIndex < _figureCount - 1) {
            btnNext.css("opacity", "1");
        }
    }

    /**
     * 通过插图浏览器中转到文档插图位置
     */
    function gotoFigure() {
        $(".mdx-figure-content").click(function () {
            window.location.href = "#fig-idx" + _figIndex;
            hideFigureViewer();
        });
    }

    /**
     * 初始化UI国际化内容
     */
    function initUIi18n() {
        switch (env.language.base) {
            case "zh":
                _lang = 1; // 繁体中文
                if (env.language.subset.toLowerCase() == "cn" || env.language.subset.toLowerCase() == "chs")
                    _lang = 0; // 简体中文
                break;
            case "en":
                _lang = 2; // 英
                break;
            case "fr":
                _lang = 3; // 法
                break;
            case "ru":
                _lang = 4; // 俄
                break;
            case "ja":
                _lang = 5; // 日
                break;
            case "ko":
                _lang = 6; // 韩
                break;
            default:
                _lang = 2; // 英
        }

        $(".mdx-toc-box-title").attr("title", ["查看文档封面",
            "查看文檔封面",
            "View Document Cover",
            "Voir la couverture du document",
            "Просмотреть обложку документа",
            "ドキュメントカバーを表示する",
            "문서 표지보기"
        ][_lang]);

        $(".mdx-btn-outline").attr("tips", ["<kbd>O</kbd> - 隐藏 / 显示大纲面板",
            "<kbd>O</kbd> - 隱藏 / 顯示大綱面板",
            "<kbd>O</kbd> - Hide / Show Outline Panel",
            "<kbd>O</kbd> - Cacher / Afficher le panneau de contour",
            "<kbd>O</kbd> - Скрыть / показать панель",
            "<kbd>O</kbd> - アウトラインパネルの非表示/表示",
            "<kbd>O</kbd> - 개요 패널 숨기기 / 표시"
        ][_lang]);

        $(".mdx-btn-nav-back").attr("tips", ["后退",
            "後退",
            "Go back",
            "Retourner",
            "Возвращаться",
            "戻る",
            "돌아 가기)"
        ][_lang]);

        $(".mdx-btn-nav-forward").attr("tips", ["前进",
            "前進",
            "Go forward",
            "Aller de l'avant",
            "Иди вперед",
            "前進する",
            "앞으로 이동"
        ][_lang])

        $(".mdx-btn-fullscreen").attr("tips", ["<kbd>F</kbd> - 切换全屏",
            "<kbd>F</kbd> - 切換全屏",
            "<kbd>F</kbd> - Toggle Fullscreen",
            "<kbd>F</kbd> - Changer en plein écran",
            "<kbd>F</kbd> - Переключить полный экран",
            "<kbd>F</kbd> - フルスクリーンに切り替える",
            "<kbd>F</kbd> - 전체 화면 전환"
        ][_lang]);

        $(".mdx-btn-color-scheme").attr("tips", ["<kbd>T</kbd> - 切换 [ 黑暗 / 明亮 ] 模式",
            "<kbd>T</kbd> - 切換 [ 黑暗 / 明亮 ] 模式",
            "<kbd>T</kbd> - Switch Dark/Light Mode",
            "<kbd>T</kbd> - Basculer en mode sombre / clair",
            "<kbd>T</kbd> - Переключить темный / светлый режим",
            "<kbd>T</kbd> - ダーク/ライトモードの切り替え",
            "<kbd>T</kbd> - 다크 / 라이트 모드 전환"
        ][_lang]);

        $(".mdx-btn-font-style").attr("tips", ["<kbd>A</kbd> - 切换 字体风格",
            "<kbd>A</kbd> - 切換 字體風格",
            "<kbd>A</kbd> - Switch Font Style",
            "<kbd>A</kbd> - Changer de style de police",
            "<kbd>A</kbd> - Переключить стиль шрифта",
            "<kbd>A</kbd> - フォントスタイルの切り替え",
            "<kbd>A</kbd> - 글꼴 스타일 전환"
        ][_lang]);

        $(".mdx-btn-figure-launcher").attr("tips", ["<kbd>I</kbd> - 查看文档插图",
            "查看文檔插圖",
            "<kbd>I</kbd> - View Document Figures",
            "<kbd>I</kbd> - Afficher l'illustration du document",
            "<kbd>I</kbd> - Просмотр иллюстрации документа",
            "<kbd>I</kbd> - ドキュメントの図を表示",
            "<kbd>I</kbd> - 문서 그림보기"
        ][_lang]);

        $(".mdx-btn-spotlight").attr("tips", ["<kbd>S</kbd> - 打开 / 关闭聚光灯<br><kbd>Z</kbd> - 打开聚光灯后调整大小",
            "<kbd>S</kbd> - 打開 / 關閉聚光燈<br><kbd>Z</kbd> - 打開聚光燈後調整大小",
            "<kbd>S</kbd> - Turn the spotlight ON/OFF<br><kbd>Z</kbd> - Resize after turning on the spotlight",
            "<kbd>S</kbd> - Allumer/éteindre le projecteur, <kbd>Z</kbd> - Redimensionner après avoir allumé le projecteur",
            "<kbd>S</kbd> - Включите/выключите прожектор, <kbd>Z</kbd> - Изменить размер после включения прожектора",
            "<kbd>S</kbd> - スポットライトをオン/オフにする, <kbd>Z</kbd> - スポットライトをオンにした後のサイズ変更",
            "<kbd>S</kbd>　스포트라이트 켜기 / 끄기 (S, 또는 문서를 두 번 클릭), <kbd>Z</kbd> - 스포트라이트를 켠 후 크기 조정"
        ][_lang]);

        $(".mdx-btn-print").attr("tips", ["<kbd>P</kbd> - 打印...",
            "<kbd>P</kbd> - 打印...",
            "<kbd>P</kbd> - Print...",
            "<kbd>P</kbd> - Imprimer...",
            "<kbd>P</kbd> - Печать...",
            "<kbd>P</kbd> - 印刷する...",
            "<kbd>P</kbd> - 인쇄..."
        ][_lang]);

        $(".mdx-nav-prev").attr("tips", ["<kbd>←</kbd> / <kbd>&lt;</kbd> - 前一章节",
            "<kbd>←</kbd> / <kbd>&lt;</kbd> - 前一章節",
            "<kbd>←</kbd> / <kbd>&lt;</kbd> - Previous Chapter",
            "<kbd>←</kbd> / <kbd>&lt;</kbd> - Chapitre Précédent",
            "<kbd>←</kbd> / <kbd>&lt;</kbd> - Предыдущая глава",
            "<kbd>←</kbd> / <kbd>&lt;</kbd> - 前の章",
            "<kbd>←</kbd> / <kbd>&lt;</kbd> - 이전 장"
        ][_lang]);

        $(".mdx-nav-next").attr("tips", ["<kbd>→</kbd>, <kbd>&gt;</kbd> - 后一章节",
            "<kbd>→</kbd> / <kbd>&gt;</kbd> - 後一章節",
            "<kbd>→</kbd> / <kbd>&gt;</kbd> - Next Chapter",
            "<kbd>→</kbd> / <kbd>&gt;</kbd> - Chapitre Suivant",
            "<kbd>→</kbd> / <kbd>&gt;</kbd> - Следующая глава",
            "<kbd>→</kbd> / <kbd>&gt;</kbd> - 次の章",
            "<kbd>→</kbd> / <kbd>&gt;</kbd> - 다음 장"
        ][_lang]);

        $(".mdx-bread-nav-text").attr("tips", ["回到本章节的开始",
            "回到本章節的開始",
            "Go back to the beginning of this chapter",
            "Retourner au début de ce chapitre",
            "Вернитесь к началу этой главы",
            "この章の始めに戻る",
            "이 장의 시작 부분으로 돌아 가기"
        ][_lang]);

        $(".mdx-btn-prev-figure").attr("title", ["[ ← ] - 前一张",
            "[ ← ] - 前一張",
            "[ ← ] - Previous",
            "[ ← ] - Précédent",
            "[ ← ] - Предыдущая фотографияs",
            "[ ← ] - 前へ",
            "[ ← ] - 이전"
        ][_lang]);

        $(".mdx-btn-next-figure").attr("title", ["[ → ] - 后一张",
            "[ → ] - 後一張",
            "[ → ] - Next",
            "[ → ] - Le suivant",
            "[ → ] - Следующий",
            "[ → ] - 次の",
            "[ → ] - 다음"
        ][_lang]);

        $(".mdx-btn-close-figure-viewer").attr("title", ["[ ESC ] - 关闭",
            "[ ESC ] - 關閉",
            "[ ESC ] - Close",
            "[ ESC ] - Fermer",
            "[ ESC ] - близко",
            "[ ESC ] - 閉じる",
            "[ ESC ] - 닫기"
        ][_lang]);

        $(".mdx-footer-note-toolbar a").text(["查看所有脚注 ▶",
            "查看所有腳註 ▶",
            "View all footnotes ▶",
            "Afficher toutes les notes de bas de page ▶",
            "Просмотреть все сноски ▶",
            "すべての脚注を見る ▶",
            "모든 각주보기 ▶"
        ][_lang]);

        $(".mdx-figure-action").attr("title", ["在新标签页中打开",
            "在新標籤頁中打開",
            "Open in new tab",
            "Ouvrir dans un nouvel onglet",
            "Открыть в новой вкладке",
            "新しいタブで開く",
            "새 탭에서 열기"
        ][_lang]);
    }

    /**
     * 根据设备类型自适应hover样式
     */
    function adjustHoverStyle() {
        // 移动设备时解绑样式事件
        if (env.device.mobile) {
            $(".mdx-btn, .mdx-nav-prev, .mdx-nav-next").unbind("mouseenter").unbind("mouseleave");
        }
        // 非移动设备时绑定样式事件
        else {
            // 按钮
            $(".mdx-btn").bind("mouseenter", function () {
                $(this).addClass("mdx-btn-hover");
            }).bind("mouseleave", function () {
                $(this).removeClass("mdx-btn-hover");
                $(this).addClass("mdx-btn-leave");
            });
        }
    }

    /**
     * 环境信息类
     */
    const env = {
        // Windows 平台样例：
        // (Chrome) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
        // (Firefox) Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
        // (Edge) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
        //
        // macOS 平台样例：
        // (Chrome) Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
        // (Firefox) Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0
        // (Safari) Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15
        //
        // 浏览器内核信息
        core: function () {
            const u = navigator.userAgent;
            return {
                trident: u.indexOf("Trident") > -1, //IE内核
                presto: u.indexOf("Presto") > -1, //opera内核
                webkit: u.indexOf("AppleWebKit") > -1, //苹果、谷歌内核
                gecko: u.indexOf("Gecko") > -1 && u.indexOf("KHTML") == -1 //火狐内核
            };
        }(),
        // 设备信息
        device: function () {
            const u = navigator.userAgent;
            return {
                mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
                android: u.indexOf("Android") > -1 || u.indexOf("Linux") > -1, // android终端或者uc浏览器
                iPhone: u.indexOf("iPhone") > -1, // 是否为iPhone或者QQHD浏览器
                iPad: u.indexOf("iPad") > -1 // 是否iPad
            };
        }(),
        // 浏览器类型
        browser: function () {
            const u = navigator.userAgent;
            return {
                chrome: u.indexOf("Chrome") > -1, // Chrome浏览器
                firefox: u.indexOf("Firefox") > -1, // Firefox浏览器
                safari: u.indexOf("Safari") > -1 && u.indexOf("Version") > -1 // Safari浏览器
            };
        }(),
        // 浏览器版本信息
        browserVersion: function () {
            const u = navigator.userAgent;
            return {
                chrome: u.match(/Chrome\/[\d.]+/gi) ? u.match(/Chrome\/[\d.]+/gi)[0].match(/[\d]+/)[0] :
                "0", // chrome浏览器版本
                firefox: u.match(/Firefox\/[\d.]+/gi) ? u.match(/Firefox\/[\d.]+/gi)[0].match(/[\d]+/)[0] :
                "0", // firefox浏览器版本
                safari: u.match(/Version\/[\d.]+.+Safari\/[\d.]+/gi) ? u.match(
                    /Version\/[\d.]+.+Safari\/[\d.]+/gi)[0].match(/[\d]+/)[0] : "0" // safari浏览器版本
            };
        }(),
        // 操作系统信息
        os: function () {
            const u = navigator.userAgent;
            return {
                windows: /windows|win32|win64/i.test(u), // 是否为windows平台
                macos: /macintosh|mac os x/i.test(u) // 是否为macOS平台
            };
        }(),
        // 语言信息
        language: function () {
            const lang = (navigator.browserLanguage || navigator.language);
            return {
                full: lang.toLowerCase(),
                base: lang.substring(0, 2),
                subset: lang.substring(3, lang.length)
            };
        }()
    }

    /**
     * 显示浏览器相关信息
     */
    function displayEnvInfo() {
        console.log("User-Agent\t[ " + navigator.userAgent + " ]");

        console.log("Language\t"
            + "[ " + env.language.base + (env.language.subset.length > 0 ? "_" + env.language.subset : "") + " ]");

        console.log("OS\t\t\t"
            + (env.os.macos ? "[ macOS ]" : "[ Windows ]"));

        console.log("Device\t\t"
            + "[ "
            + (env.device.mobile ? "Mobile " : "")
            + (env.device.ios ? "iOS " : "")
            + (env.device.android ? "Android " : "")
            + (env.device.iPhone ? "iPhone " : "")
            + (env.device.iPad ? "iPad " : "")
            + "]");

        console.log("Browser\t\t"
            + "[ "
            + (env.browser.chrome ? "Chrome " + env.browserVersion.chrome : "")
            + (env.browser.firefox ? "Firefox " + env.browserVersion.firefox : "")
            + (env.browser.safari ? "Safari " + env.browserVersion.safari : "")
            + " ]");

        console.log("Core\t\t"
            + "[ "
            + (env.core.gecko ? "Gecko" : "")
            + (env.core.presto ? "Presto" : "")
            + (env.core.trident ? "Trident" : "")
            + (env.core.webkit ? "WebKit" : "")
            + " ]");
    }

    /**
     * 初始化引用块以实现折叠支持
     */
    function initBlockquote() {
        $("blockquote > p").each(function () {
            let obj = $(this);
            // 默认收起
            if (obj.text().startWith("[+] ")) {
                obj.next("blockquote").css("display", "none");
                obj.html(obj.html().replace("[+] ", "▶ "));
                obj.attr("title", ["点击展开",
                    "點擊展開",
                    "Click to unfold",
                    "Cliquez pour agrandir",
                    "Нажмите, чтобы развернуть",
                    "クリックして拡大",
                    "확대하려면 클릭하십시오."
                ][_lang]);
                obj.addClass("mdx-blockquote-folder");
                obj.css("cursor", "pointer");
                obj.click(function () {
                    toggleQuoteFolding($(this));
                });
            }
            // 默认展开
            else if (obj.text().startWith("[-] ")) {
                obj.html(obj.html().replace("[-] ", "▼ "));
                obj.attr("title", ["点击收起",
                    "點擊收起",
                    "Click to fold",
                    "Cliquez pour fermer",
                    "Нажмите, чтобы закрыть",
                    "閉じる",
                    "닫기를 클릭하십시오"
                ][_lang]);
                obj.addClass("mdx-blockquote-folder");
                obj.css("cursor", "pointer");
                obj.click(function () {
                    toggleQuoteFolding($(this));
                });
            }
        });
    }

    /**
     * 展开/收起引用块
     */
    function toggleQuoteFolding(obj) {
        let quote = obj.next("blockquote");
        quote.css("display") == "none" ? unfoldQuote(obj, quote) : foldQuote(obj, quote);
    }

    /**
     * 收起引用块
     */
    function foldQuote(obj, quote) {
        console.log("fold: " + quote.css("display"));
        quote.css("display", "none");
        obj.attr("title", ["点击展开",
            "點擊展開",
            "Click to unfold",
            "Cliquez pour agrandir",
            "Нажмите, чтобы развернуть",
            "クリックして拡大",
            "확대하려면 클릭하십시오."
        ][_lang]);
        obj.html(obj.html().replace("▼ ", "▶ "));
    }

    /**
     * 展开引用块
     */
    function unfoldQuote(obj, quote) {
        console.log("unFold: " + quote.css("display"));
        quote.css("display", "block");
        obj.attr("title", ["点击收起",
            "點擊收起",
            "Click to fold",
            "Cliquez pour fermer",
            "Нажмите, чтобы закрыть",
            "閉じる",
            "닫기를 클릭하십시오"
        ][_lang]);
        obj.html(obj.html().replace("▶ ", "▼ "));
    }

    /**
     * 初始化外部链接（http://、https://、ftp://等），为其添加target参数
     */
    function initExtLink() {
        $("a[href^='http']").each(function () {
            if (!$(this).attr("target"))
                $(this).attr("target", "_blank");
        });
        $("a[href^='ftp']").each(function () {
            if (!$(this).attr("target"))
                $(this).attr("target", "_blank");
        });
    }

    /**
     * 显示/隐藏大纲面板
     */
    function toggleOutline() {
        if (isOutlineShowed())
            hideOutline();
        else
            showOutline();
    }

    /**
     * 显示outline
     */
    function showOutline() {
        _outlineShowed = true;
        let toc = $(".mdx-toc-box");
        if (isOutlineShowed() && parseInt(toc.css("left")) < 0) {
            // 显示大纲工具栏
            toc.addClass("mdx-float-card");
            toc.animate({
                left: 10 + _reboundOffset
            }, _animateSpeed).animate({
                left: 10
            }, _animateSpeed);

            if ($(window).width() < parseInt(toc.css("width")))
                toc.css("width", $(window).width() - 20);
            else
                toc.css("width", parseInt(getComputedStyle(document.documentElement).getPropertyValue("--toc-box-width")));

            // 显示遮罩
            showMask(toc, hideOutline);
        }
    }

    /**
     * 隐藏大纲
     */
    function hideOutline() {
        _outlineShowed = false;
        let toc = $(".mdx-toc-box");
        const tocBoxWidth = toc.width();
        if (!isOutlineShowed() && parseInt($(".mdx-toc-box").css("left")) > 0) {
            toc.animate({
                left: -tocBoxWidth
            }, _animateSpeed, function () {
                toc.removeClass("mdx-float-card");
            });

            hideMask();
        }
    }

    /**
     * 根据实际目录结构初始化大纲折叠控件folder
     */
    function initFolderButton() {
        let folder = null;
        for (let i = 0; i < _foldItem.length; i++) {
            folder = _foldItem[i].html(_icoUnfold);
            folder.parent().attr({
                "data-node": "1", // 0:leaf, 1:folder
                "data-folding": "1" // 0:collect, 1:expand
            });
            folder.click(function () {
                foldingChapter($(this).parent().attr("id"));
                event.cancelBubble = true;
            });
        }
    }

    /**
     * 页面滚动时高亮outline中的对应章节项
     */
    function followHeader() {
        let currentIndex = -1;

        // 寻找当前屏幕显示的章节
        for (let i = 0; i < _headers.length; i++) {
            let obj = env.browser.firefox == false
                ? $("a[name='" + _headers[i] + "']") // 非 Firefox 浏览器
                : $("a[name='" + decodeURI(_headers[i]) + "']"); // Firefox 浏览器
            let headerHeight = obj.parent().height();
            // 当前章节标题已滚过了屏幕顶部
            if ((obj.offset().top - $(document).scrollTop()) > (headerHeight / 2)) {
                currentIndex = i;
                break;
            }
        }

        // 当前章节未变更
        if (_lastCurrentHeaderIndex == currentIndex)
            return;

        _lastCurrentHeaderIndex = currentIndex;

        // 当前屏幕内容为第1章或以后章节的内容
        if (isFallInHeaders() == true) {
            // 根据是否为最后章节修正当前章节索引
            let currentIndex = _lastCurrentHeaderIndex > 0 ? (_lastCurrentHeaderIndex - 1) : (_headers.length - 1);

            // 清除大纲中上一次当前章节的样式
            if (_lastOutlineItem != null)
                _lastOutlineItem.removeClass("mdx-header-current");

            _lastOutlineItem = $("a[href='#" + _headers[currentIndex] + "']").parent();
            _lastOutlineItem.addClass("mdx-header-current");

            const tocBoxBody = $("#toc-box-body");
            const preDis = _lastOutlineItem.height() * 2;
            const sTop = tocBoxBody.scrollTop();
            const sBottom = sTop + tocBoxBody.height();

            if (_lastOutlineItem.position().top < sTop)
                $("#toc-box-body").scrollTop(_lastOutlineItem.position().top);
            else if (_lastOutlineItem.position().top > (sBottom - preDis))
                $("#toc-box-body").scrollTop(_lastOutlineItem.position().top - $("#toc-box-body").height() + preDis);

            // 更新面包屑导航UI及数据
            updateBreadNavUI(currentIndex);
        }

        adjustBreadNav();
    }

    /**
     * 是否落入章节内
     */
    function isFallInHeaders() {
        return _lastCurrentHeaderIndex > 0 || // 非最后章节
            (_lastCurrentHeaderIndex == -1 && _headers.length > 1); // 最后章节
    }

    /**
     * 更新面包屑导航UI及数据
     */
    function updateBreadNavUI(currentIndex) {
        // 更新导航栏内容
        let navText = $(".mdx-bread-nav-text");
        navText.text(_lastOutlineItem.attr("title"));
        navText.attr("data-anchor", _headers[currentIndex]);
        navText.click(function () {
            gotoHeader($(this));
        });

        // 面包屑导航：上一章
        let prev = $(".mdx-nav-prev");
        let prevText = $(".mdx-nav-prev-text");
        if (currentIndex > 0) {
            prev.css("display", "block");
            prevText.text($("a[href='#" + _headers[currentIndex - 1] + "']").parent().attr("title"));
            prevText.attr({
                "title": prevText.text(),
                "data-anchor": _headers[currentIndex - 1]
            });
        } else { // 当前章节为第1章时特殊处理
            prevText.text(["封面",
                "封面",
                "Cover",
                "Couverture",
                "передняя крышка",
                "カバー",
                "표지"
            ][_lang]);
            prevText.attr({
                "title": prevText.text(),
                "data-anchor": "cover"
            });
        }

        // 面包屑导航：下一章
        let next = $(".mdx-nav-next");
        let nextText = $(".mdx-nav-next-text");
        if (currentIndex < _headers.length - 1) {
            next.css("display", "block");
            nextText.text($("a[href='#" + _headers[currentIndex + 1] + "']").parent().attr("title"));
            nextText.attr({
                "title": nextText.text(),
                "data-anchor": _headers[currentIndex + 1]
            });
        } else
            next.css("display", "none");
    }

    /**
     * 显示工具提示信息
     */
    function showToolTips(msg, follow, align) {
        if (env.device.mobile == true)
            return;

        let toolTips = $(".mdx-tool-tips");
        hideTips(toolTips, true);
        toolTips.html(msg);

        const fp = follow.parent();
        const ow = toolTips.width();
        const ww = $(window).width();
        const gap = 30;
        let left = follow.offset().left;
        toolTips.css({
            "border-top-left-radius": "0",
            "border-top-right-radius": "15px"
        });

        // 指定对齐方式或提示超出屏幕
        if (align != null || (left + ow + gap) > ww) {
            // align: right
            toolTips.css({
                "border-top-left-radius": "15px",
                "border-top-right-radius": "0"
            });
            left = follow.offset().left - ow + follow.width() - gap;

            // align: center
            if (align == "center") {
                left = follow.offset().left + (follow.width() - ow) / 2 - gap / 2;
                toolTips.css({
                    "border-top-left-radius": "15px",
                    "border-top-right-radius": "15px"
                });
            }
        }

        toolTips.css({
            "left": left,
            "top": fp.offset().top - $(document).scrollTop() + fp.height() +
                (fp.css("background-color") == "rgba(0, 0, 0, 0)" ? 0 : 10)
        });
        toolTips.fadeIn(_animateSpeed);
    }

    /**
     * 显示通知提示信息
     */
    function showInfoTips(msg, delay, fullscreen) {
        clearTimeout(_tipsTimer);

        let obj = $(".mdx-info-tips");
        obj.html(msg);
        // 先重置为默认值
        obj.css({
            right: "auto",
            bottom: "auto",
            borderRadius: 15,
            lineHeight: "2em"
        });

        if (fullscreen == false) { // 居中显示
            obj.css({
                left: ($(window).width() - obj.width()) / 2,
                top: ($(window).height() - obj.height()) / 2
            });
        } else { // 全屏显示
            obj.css({
                left: 0,
                top: 0,
                right: 0,
                bottom: 0,
                borderRadius: 0
            });
            obj.css({
                lineHeight: obj.height() + "px"
            });
        }
        obj.fadeIn(_animateSpeed, function () {
            if (delay != null)
                _tipsTimer = setTimeout(function () {
                    hideTips(obj, true);
                }, delay);
        });
    }

    /**
     * 隐藏工具提示、弹窗信息
     */
    function hideTips(obj, ani) {
        if (ani == true)
            obj.fadeOut(_animateSpeed);
        else
            obj.hide();
    }

    /**
     * 显示面包屑导航
     */
    function showBreadNav() {
        let nav = $(".mdx-bread-nav");
        // 若已显示则跳过
        if (parseInt(nav.css("top")) >= 0)
            return;

        nav.addClass("mdx-float-card");
        // nav.css({top: -50});
        nav.animate({
            top: 0
        }, _animateSpeed);
    }

    /**
     * 隐藏面包屑导航
     */
    function hideBreadNav() {
        let nav = $(".mdx-bread-nav");
        if (parseInt(nav.css("top")) < 0)
            return;

        // 隐藏面包屑导航条
        nav.removeClass("mdx-float-card");
        nav.animate({
            top: -50
        }, _animateSpeed);
    }

    /**
     * 跳转至指定章节
     */
    function gotoHeader(obj) {
        let dataAnchor = obj.attr("data-anchor");
        if (dataAnchor == "cover")
            gotoTop();
        else
            window.location.href = "#" + obj.attr("data-anchor");
    }

    /**
     * 跳转至封面
     */
    function gotoTop() {
        $(window).scrollTop(0);
        if (_lastOutlineItem != null) {
            _lastOutlineItem.removeClass("mdx-header-current");
            // _lastOutlineItem.removeClass("mdx-header-current-dark");
            _lastCurrentHeaderIndex = -2;
        }
    }

    /**
     * 跳转至脚注区域
     */
    function gotoFooterArea() {
        hideFooterNote();
        window.location.href = "#xFooterArea";
    }

    /**
     * 返回上一个位置
     */
    function navBack() {
        window.history.back();
    }

    /**
     * 前去下一个位置
     */
    function navForward() {
        window.history.forward();
    }

    /**
     * 自适应显示工具栏
     */
    function adjustToolbar() {
        let tb = $(".mdx-toolbar");

        // 移动端下隐藏不必要的功能入口
        if (env.device.mobile == true)
            $(".mdx-btn-print, .mdx-btn-spotlight, .mdx-btn-font-style, .mdx-btn-color-scheme, .mdx-btn-print").hide();

        // 如果是小屏，或回到封面位置（面包屑已隐藏）
        if (isSmallScreen() || _lastCurrentHeaderIndex == 0) {
            $(".mdx-toolbar > div").addClass("mdx-float-card");

            // 小屏则直接隐藏背景
            if (isSmallScreen()) {
                tb.css({
                    background: "none"
                });
                tb.animate({
                    top: 50
                }, _animateSpeed);
            }
            // 大屏则动画式收起
            else {
                tb.css({
                    background: "none"
                });
            }

            tb.removeClass("mdx-backdrop-blurs");
            tb.removeClass("mdx-float-card");
            tb.animate({
                right: 10,
                width: $("#write").width() + 20
            }, _animateSpeed);

            if (_lastCurrentHeaderIndex == 0) // 如果回到封面位置（面包屑已隐藏），则进行二次调整
                tb.css({
                    top: 10
                });
        } else {
            $(".mdx-toolbar > div").removeClass("mdx-float-card");

            tb.css({
                // top: -50,
                backgroundColor: $(".mdx-bread-nav").css("background-color")
            });

            tb.addClass("mdx-backdrop-blurs");
            tb.addClass("mdx-float-card");
            tb.animate({
                top: 0,
                right: "auto",
                width: parseInt(getComputedStyle(document.documentElement).getPropertyValue("--toc-box-width"))
            }, _animateSpeed);
        }

        $(".mdx-btn-fullscreen").css("visibility", "visible");
        if (env.device.mobile)
            $(".mdx-btn-fullscreen").css("visibility", "hidden");
    }

    /**
     * 判断是否为小屏
     */
    function isSmallScreen() {
        return $(window).width() < _smallScreenWidth;
    }

    /**
     * 面包屑导航自适应显示
     */
    function adjustBreadNav() {
        let prev = $(".mdx-nav-prev");
        let prevText = $(".mdx-nav-prev-text");
        let next = $(".mdx-nav-next");
        let nextText = $(".mdx-nav-next-text");
        let nav = $(".mdx-bread-nav");
        let navText = $(".mdx-bread-nav-text");

        // 根据屏幕宽度显示/隐藏上下章节标题
        if (isSmallScreen()) {
            nav.css({
                left: 10
            });

            prevText.hide();
            nextText.hide();
            prev.css("width", "20%");
            next.css("width", "20%");

            // 调整面包屑导航样式
            navText.css({
                "margin-left": "40px",
                "margin-right": "40px"
            });
        } else {
            nav.css({
                left: "calc(var(--toc-box-width) + 30px)"
            });

            prevText.show();
            nextText.show();
            prev.css("width", "25%");
            next.css("width", "25%");

            // 调整面包屑导航样式
            navText.css({
                "margin-left": "200px",
                "margin-right": "200px"
            });
        }

        if (isFallInHeaders() == true) { // 最后章节
            // 显示面包屑导航
            showBreadNav();
            adjustToolbar();
        } else {
            // 隐藏面包屑导航
            hideBreadNav();
            adjustToolbar();
        }
    }

    /**
     * 收起/展开章节目录
     * @param id 对象的id值
     */
    function foldingChapter(id) {
        let obj = $("#" + id);
        let folder = $("#fd-" + id);
        const folding = obj.attr("data-folding");
        if (folding == "0") {
            obj.attr("data-folding", "1");
            folder.html(_icoUnfold);
            disposeFolding(id, 1, true);
        } else if (folding == "1") {
            obj.attr("data-folding", "0");
            folder.html(_icoFold);
            disposeFolding(id, 0, true);
        }
    }

    /**
     * 处理展开或收起指定ID下的子章节
     * @param id 对象的id值
     * @param act 动作：0=收起，1=展开
     * @param recu 是否遍历子元素
     */
    function disposeFolding(id, act, recu) {
        let lastItem = null;
        let itemSet = $("#" + id).nextAll();
        for (let i = 0; i < itemSet.length; i++) {
            let item = $(itemSet[i]);
            if (lastItem != null) {
                const hd1 = getCSSHeaderLevel(item);
                const hd2 = getCSSHeaderLevel(lastItem);
                if (hd1 > hd2)
                    continue;
                else if (hd1 < hd2)
                    break;
            }
            // 如果是目录节点，同时是已展开的，才进行递归调用展开子节点
            if (recu == true && item.attr("data-node") == "1" && item.attr("data-folding") == "1") {
                disposeFolding(item.attr("id"), act, recu);
            }
            if (act == 0) // 收起
                item.css("display", "none");
            else if (act == 1) // 展开
                item.css("display", "block");
            lastItem = item;
        }
    }

    /**
     * 返回指定对象的CSS的header的样式层级
     */
    function getCSSHeaderLevel(obj) {
        let cname = obj.attr("class");
        return cname.substr(cname.indexOf("md-toc-h") + "md-toc-h".length, 1)
    }

    /**
     * 更新任务列表的勾选框样式
     */
    function restyleTaskListCheckbox() {
        let obj = $(".md-task-list-item > input:disabled");
        obj.removeAttr("disabled");
        obj.css("pointer-events", "none");
    }

    /**
     * 更新指定内容的code标记样式
     */
    function restyleCode() {
        // 更新指定内容的<code>标签样式
        $("code").each(function () {
            // 将非英文竖线替换为半角
            if ($(this).text().length > 2) {
                $(this).text($(this).text().replaceAll("｜｜｜｜｜｜", " |||||| "));
                $(this).text($(this).text().replaceAll("｜｜｜｜｜", " ||||| "));
                $(this).text($(this).text().replaceAll("｜｜｜｜", " |||| "));
                $(this).text($(this).text().replaceAll("｜｜｜", " ||| "));
                $(this).text($(this).text().replaceAll("｜｜", " || "));
                $(this).text($(this).text().replaceAll("｜", " | "));
                $(this).text($(this).text().replaceAll("丨丨丨丨丨丨", " |||||| "));
                $(this).text($(this).text().replaceAll("丨丨丨丨丨", " ||||| "));
                $(this).text($(this).text().replaceAll("丨丨丨丨", " |||| "));
                $(this).text($(this).text().replaceAll("丨丨丨", " ||| "));
                $(this).text($(this).text().replaceAll("丨丨", " || "));
                $(this).text($(this).text().replaceAll("丨", " | "));
            }

            // ========== 药丸样式 ==========
            let codeText = $(this).text();
            // 新语法（风格2）
            let codeTags = new Array("==", "++", "**", "--", "!!", "##");
            let flag = false;
            for (let i = 0; i < codeTags.length; i++) {
                let si = codeText.indexOf(" | ");
                if (codeText.length > 7 &&
                    codeText.startWith(codeTags[i] + " ") &&
                    codeText.endWith(" " + codeTags[i]) &&
                    si > 2) {
                    rebuildSegmentCode2($(this), codeTags[i] + " ", si, "", i + 1);
                    flag = true;
                    break;
                }
            }
            // 新语法（风格1）
            if (flag == true) return;
            codeTags = new Array("=", "+", "*", "-", "!", "#");
            // flag = false;
            for (let i = 0; i < codeTags.length; i++) {
                const si = codeText.indexOf(" | ");
                if (codeText.length > 5 &&
                    codeText.startWith(codeTags[i] + " ") &&
                    codeText.endWith(" " + codeTags[i]) &&
                    si > 1) {
                    rebuildSegmentCode2($(this), codeTags[i] + " ", si, "", i + 1);
                    flag = true;
                    break;
                }
            }

            // ========== 标签式 ==========
            codeText = $(this).text();
            // 新语法（风格2）
            codeTags = new Array("==", "++", "**", "--", "!!", "##");
            // flag = false;
            for (let i = 0; i < codeTags.length; i++) {
                if (codeText.length > 6 && codeText.startWith(codeTags[i] + " ") && codeText.endWith(" " +
                        codeTags[i])) {
                    rebuildInlineCode($(this), codeTags[i] + " ", "", i + 1);
                    flag = true;
                    break;
                }
            }
            // 新语法（风格1）
            if (flag == true) return;
            codeTags = new Array("=", "+", "*", "-", "!", "#");
            // flag = false;
            for (let i = 0; i < codeTags.length; i++) {
                if (codeText.length > 4 && codeText.startWith(codeTags[i] + " ") && codeText.endWith(" " +
                        codeTags[i])) {
                    rebuildInlineCode($(this), codeTags[i] + " ", "", i + 1);
                    flag = true;
                    break;
                }
            }

            // ========== 药丸样式（旧语法）==========
            if (flag == true) return;
            codeTags = new Array(" | ", " || ", " ||| ", " |||| ", " ||||| ", " |||||| ");
            // flag = false;
            for (var i = 5; i >= 0; i--) {
                if (codeText.length > 5 && !codeText.startWith("`") && !codeText.endWith("`") && codeText
                    .indexOf(codeTags[i]) > 0) {
                    rebuildSegmentCode($(this), codeTags[i], i + 1);
                    flag = true;
                    break;
                }
            }

            // 普通标签增加样式标识，以用于深色模式时的识别
            if (flag == true)
                return;
            $(this).addClass("mdx-std-code");
        });
    }

    /**
     * 替换所有内容
     */
    String.prototype.replaceAll = function (f, e) {
        const reg = new RegExp(f, "g");
        return this.replace(reg, e);
    }

    /**
     * 以分类标签样式重新设置code的渲染样式（新语法）
     */
    function rebuildInlineCode(obj, split, flag, number) {
        const codeText = obj.text();
        const si = codeText.indexOf(split);
        obj.text(codeText.substring(si + split.length, codeText.length - split.length));
        obj.attr("class", "mdx-code-c" + number + flag);
    }

    /**
     * 以分类标签样式重新设置code block中指定内容的渲染样式（新语法）
     */
    function rebuildCodeFences(obj, split, flag, number) {
        const codeText = obj.text().substring(1, obj.text().length - 1);
        const si = codeText.indexOf(split);
        obj.text(codeText.substring(si + split.length, codeText.length - split.length));
        obj.attr("class", "mdx-code-c" + number + flag);
    }

    /**
     * 以药丸样式重建code标签结构与内容（旧语法）
     */
    function rebuildSegmentCode(obj, split, number) {
        const codeText = obj.text();
        const si = codeText.indexOf(split);
        obj.before("<code class='mdx-code-name" + number + "'>" + codeText.substr(0, si) + "</code>");
        obj.text(codeText.substr(si + split.length, codeText.length));
        obj.attr("class", "mdx-code-value" + number);
    }

    /**
     * 以药丸样式重建code标签结构与内容（新语法）
     */
    function rebuildSegmentCode2(obj, iden, si, flag, number) {
        const codeText = obj.text();
        obj.before("<code class='mdx-code-name" + number + flag + "'>" + codeText.substring(iden.length, si) +
            "</code>");
        obj.text(codeText.substring(si + 3, codeText.length - iden.length));
        obj.attr("class", "mdx-code-value" + number + flag);
    }

    /**
     * 更新指定内容的mermaid时序图的角色样式
     */
    function restyleMermaidStyle() {
        $(".md-diagram-panel svg[id^='mermaidChart'] > g > rect[class='actor']").each(function () {
            let textObj = $(this).next("text").children(); // actor rect object
            const person = /\@.*/g; // 人物
            const keySys = /\=.*\=/g; // 重点系统
            const extSys = /\-.*\-/g; // 外部系统

            // 更新<人物角色>样式
            if (person.test(textObj.text()) == true) {
                const h = $(this).height();
                $(this).css({
                    "rx": h / 2,
                    "ry": h / 2
                });
                textObj.text(textObj.text().substring(1, textObj.text().length));
            }
            // 更新 重点系统 样式
            else if (keySys.test(textObj.text()) == true) {
                $(this).css("stroke-width", "3"); // actor / rect
                textObj.css("font-weight", "bold"); // actor text
                textObj.text(textObj.text().substring(1, textObj.text().length - 1));
            }
            // 更新 外部系统 样式
            else if (extSys.test(textObj.text()) == true) {
                $(this).css("stroke-dasharray", "5 2"); // actor / rect
                textObj.text(textObj.text().substring(1, textObj.text().length - 1));
            }
        });

        // 更新loop/opt标签样式
        $(".md-diagram-panel svg g text[class='labelText'] > tspan").each(function () {
            const textObj = $(this);
            const g = textObj.parent().parent();
            // default opt
            let bgColor = $(".mdx-color-third-alt").css("color");
            let borderColor = $(".mdx-color-third-fade").css("color");
            let textColor = $(".mdx-color-third").css("color");
            if (textObj.text() == "loop") { // loop
                bgColor = $(".mdx-color-fourth-alt").css("color");
                borderColor = $(".mdx-color-fourth-fade").css("color");
                textColor = $(".mdx-color-fourth").css("color");
            }
            if (textObj.text() == "loop" || textObj.text() == "opt") {
                g.children("polygon.labelBox").css("fill", bgColor);
                g.children("line.loopLine").css("stroke", borderColor);
                g.children("text.labelText").css("fill", textColor);
                g.children("text.labelText").children("tspan").css("fill", textColor);
                g.children("text.loopText").children("tspan").css("fill", textColor);
            }
        });

        // 为兼容Firefox不支持在style中设置rx, ry，通过设置rect的rx, ry属性
        // 针对mermaid的状态图节点、子图
        $("#START rect, #END rect, #INIT ~ g > rect, .cluster rect").each(function () {
            $(this).attr({
                "rx": 15,
                "ry": 15
            });
        });

        // 修正高 DPI 导出的 mermaid 的BUG
        fixHighDPImermaid();
    }

    /**
     * 修正 mermaid 8.0 在 Windows 高 DPI 配置下导出的BUG
    */
    function fixHighDPImermaid() {
        // 跳过非 Windows 版 Typora 导出的 HTML
        if ($("body").attr("class").indexOf("os-windows") == -1)
            return;
    
        $(".label foreignObject > div, .edgeLabel foreignObject > div").each(function () {
            // 跳过空文本的处理
            if ($(this).text().trim().length == 0)
                return true;

            let ratio = $(this).parent().height() / $(this).height(), // 获得文本标签及父元素的高度比，作为line-height的基数
                child = $(this).children("span"), // 获得线条上的文本标签对象
                coefficient = 2; // 行高、字号就调节系数

            // 跳过指定的比例情况
            console.log("Mermaid Scale Ratio: " + ratio);
            if (ratio <= 1) {
                // 对于特定环境的修正
                if (ratio < 1 && env.browser.chrome && env.os.windows) {
                    $(this).parent().css("height", "2em");
                    $(this).parent().css("line-height", "1em");
                }
                return true;
            }

            // 如果当前是非高清屏，对于高 DPI 导出的文件，再修正缩放比例
            if (getDPR() == 1 && env.browser.chrome && env.os.windows) {
                ratio = ratio / 2;
                console.log("Mermaid Scale Ratio (alt): " + ratio);
            }

            if (child.length == 0) { // 非线条上的文本标签
                if (env.browser.chrome && env.os.windows) {
                    coefficient = 2;
                    ratio = ratio * coefficient; // 行高基数 * 2
                }
                $(this).css("line-height", (ratio / coefficient / 0.9) + "em");
                $(this).css("font-size", (ratio / coefficient * 0.9) + "em");
            }
            else { // 线条上的文本标签
                if (env.browser.chrome && env.os.windows) {
                    coefficient = 4;
                    ratio = ratio * coefficient; // 行高基数 * 4
                    child.css("line-height", (ratio / coefficient / 0.5) + "em");
                    child.css("font-size", (ratio / coefficient) + "em");
                }
                else if (env.browser.chrome && env.os.macos
                    || env.browser.firefox) {
                    coefficient = 2;
                    ratio = ratio * coefficient; // 行高基数 * 2
                    child.css("line-height", (ratio / coefficient / 0.9) + "em");
                    child.css("font-size", (ratio / coefficient / coefficient * 0.9) + "em");
                }
            }
        });
    }

    /**
     * 更新多行代码块code block/fences样式
     * 主要处理三类情况：
     * 1. span包裹标准格式全部内容。如：`= sourcecode =`
     * 2. span分别包裹标准格式的不同部分。如：(`)(=) (sourcecode) (=)(`)
     * 3. span包裹标准格式及其他所有内容。如：sourcecode`= sourcecode =`sourcecode
     */
    function restyleCodeFences() {
        $("span[class^='cm-']").each(function () {
            const reg = /`[=|\+|\*|\-|\!|#] (([^`])+[a-z]|[A-Z]|[\S])+ [=|\+|\*|\-|\!|#]`/g;
            let codeTags = new Array("=", "+", "*", "-", "!", "#");
            let result = $(this).text().match(reg);
            if (result != null) {
                const codeText = $(this).text().substring(1, $(this).text().length - 1);
                for (var i = 0; i < codeTags.length; i++) {
                    if (codeText.length > 4 && codeText.startWith(codeTags[i] + " ") && codeText.endWith(" " +
                            codeTags[i])) {
                        rebuildCodeFences($(this), codeTags[i] + " ", "", i + 1);
                        break;
                    }
                }
            }
        });
    }

    /**
     * 打开/关闭聚光灯
     */
    function toggleSpotlight() {
        const obj = $(".mdx-spotlight");
        if (obj.css("display") == "none") {
            obj.show();
            const e = window.event;

            if (e.clientX != undefined) {
                _spotlightX = e.clientX;
                _spotlightY = e.clientY;
            }
            repaintSpotlight();
        } else {
            obj.hide();
        }
    }

    /**
     * 切换字体样式
     */
    function toggleFontStyle() {
        const fontInfo = "<br/>──<br/><span style='font-size: 0.8em'>" + ["VLOOK 优先显示开源的思源黑体和思源宋体<br/>建议下载安装获得更好的视觉体验",
                "VLOOK 優先顯示開源的思源黑體和思源宋體<br/>建議用戶下載安裝獲得更好的視覺體驗",
                "VLOOK gives priority to the Noto Sans and Noto Serif<br/>suggesting to download and install for a better visual experience",
                "VLOOK donne la priorité à Noto Sans et Noto Serif,<br/>suggérant de télécharger et d'installer pour une meilleure expérience visuelle",
                "VLOOKUP отдает приоритет Noto Sans и Noto Serif,<br/>предлагая загрузить и установить для лучшего визуального восприятия",
                "VLOOK は、Noto SansとNoto Serifを優先し<br/>より良い視覚的経験のためにダウンロードしてインストールすることを提案します",
                "VLOOK 은 노토 산 (Noto Sans)과 노토 세리프 (Noto Serif)를<br/>우선시하여 더 나은 시각적 경험을 위해 다운로드하여 설치하도록 제안합니다"
            ][_lang] +
            "</span><br/><a href='https://github.com/MadMaxChow/VLOOK/blob/master/FONT.md' target='_blank'>" + ["下载",
                "下載",
                "Download",
                "Télécharger",
                "скачать",
                "ダウンロード",
                "다운로드"
            ][_lang] + "</a>";

        if ($("body").attr("class").indexOf("mdx-font-text-sans") == -1) {
            showInfoTips(["切换至 <b>非衬线</b> 字体",
                    "切換至 <b>非襯線</b> 字體",
                    "Switch to <b>Sans</b> Font",
                    "Basculer vers <b>Sans</b> Fuente",
                    "Переключиться на <b>шрифт без засечек</b>",
                    "に切り替える <b>Sans</b> フォント",
                    "전환 <b>Sans</b> 글꼴"
                ][_lang] + fontInfo,
                5000, false);
            applyFontStyle("sans");
        } else {
            showInfoTips(["切换至 <b>衬线</b> 字体",
                    "切換至 <b>襯線</b> 字體",
                    "Switch to <b>Serif</b> Font",
                    "Basculer vers <b>Serif</b> Police",
                    "Переключиться на шрифт <b>печать</b>",
                    "に切り替える <b>Serif</b> フォント",
                    "전환 <b>Serif</b> 폰트"
                ][_lang] + fontInfo,
                5000, false);
            applyFontStyle("serif");
        }
    }

    /**
     * 应用指定字体样式
     * @style: sans-非衬线，serif-衬线
     */
    function applyFontStyle(style) {
        const text =
            "html, body, text[text-anchor=\"start\"] > tspan, .edgeLabel, .messageText, .noteText, .noteText tspan, .MathJax_SVG g text";
        const title = "#write > h6:first-of-type, #write > h6:last-of-type";
        const tag =
            ".mdx-code-c1, .mdx-code-c2, .mdx-code-c3, .mdx-code-c4, .mdx-code-c5, .mdx-code-c6, .mdx-code-name1-alt, .mdx-code-name2-alt, .mdx-code-name3-alt, .mdx-code-name4-alt, .mdx-code-name5-alt, .mdx-code-name6-alt, .mdx-code-name1, .mdx-code-name2, .mdx-code-name3, .mdx-code-name4, .mdx-code-name5, .mdx-code-name6, .mdx-code-value1-alt, .mdx-code-value2-alt, .mdx-code-value3-alt, .mdx-code-value4-alt, .mdx-code-value5-alt, .mdx-code-value6-alt, .mdx-code-value1, .mdx-code-value2, .mdx-code-value3, .mdx-code-value4, .mdx-code-value5, .mdx-code-value6";
        const header = "h1, h2, h3, h4, h5, h6";
        const bold =
            "strong, #write > h6:first-of-type strong, #write > h6:first-of-type em, table tr th, .mdx-table-td-bold, .mdx-toc-box-title, .mdx-toc-box-header, .mdx-loading-done, .mdx-tool-tips, .mdx-info-tips, .mdx-toc-box-header, .mdx-bread-nav-text, .mdx-nav-prev-text, .mdx-nav-next-text, .mdx-toc-box-title, .mdx-figure-alt > span, rect + text[text-anchor=\"middle\"] > tspan, rect + rect + text[text-anchor=\"middle\"] > tspan, .outline-item, a[name^=\"ref-footnote-\"], .md-toc-h1, .md-toc-h2, .md-toc-h3, .md-toc-h4, .md-toc-h5, .md-fn-count, .mdx-toc-box-footer, mdx-copyright";
        const code = "code, tt, .md-fences, kbd";

        if (_currentFontStyle != null) {
            $(code).removeClass("mdx-font-code-" + _currentFontStyle);
            $(tag).removeClass("mdx-font-code-" + _currentFontStyle);
            $(tag).removeClass("mdx-font-bold-" + _currentFontStyle);
            $(text).removeClass("mdx-font-text-" + _currentFontStyle);
            $(header).removeClass("mdx-font-header-" + _currentFontStyle);
            $(title).removeClass("mdx-font-title-" + _currentFontStyle);
            $(bold).removeClass("mdx-font-bold-" + _currentFontStyle);
        }
        _currentFontStyle = style;
        $(".mdx-btn-font-style").html("<svg width='18px' height='16px'><use xlink:href='#icoFont-" + style +
            "' class='mdx-svg-ico-light'/></svg>");

        $(code).addClass("mdx-font-code-" + style);
        $(tag).removeClass("mdx-font-code-" + _currentFontStyle);
        $(tag).addClass("mdx-font-bold-" + style);
        $(text).addClass("mdx-font-text-" + style);
        $(header).addClass("mdx-font-header-" + style);
        $(title).addClass("mdx-font-title-" + style);
        $(bold).addClass("mdx-font-bold-" + style);

        localStorage["VLOOK-" + _version + "-font-style"] = _currentFontStyle;
    }

    /**
     * 切换颜色方案
     */
    function toggleColorShmeme() {
        _colorScheme = (_colorScheme == "light") ? "dark" : "light";

        if (_colorScheme == "dark") {
            showInfoTips(["正在切换为：<strong>黑暗模式</strong>",
                    "正在切換為：<strong>黑暗模式</strong>",
                    "Switching to: <strong>Dark Mode</strong>",
                    "Passer à: <strong>Mode Sombre</strong>",
                    "Переключение на: <strong>Темный режим</strong>",
                    "切り替え先：<strong>ダークモード</strong>",
                    "로 전환 : <strong>다크 모드</strong>"
                ][_lang],
                2000, true);

            // $(".md-diagram-panel svg").addClass("mdx-figure-bg-dark");
        } else {
            showInfoTips(["正在切换为：<strong>明亮模式</strong>",
                    "正在切換為：<strong>明亮模式</strong>",
                    "Switching to: <strong>Light Mode</strong>",
                    "Passer à: <strong>Mode lumière</strong>",
                    "Переключение на: <strong>Легкий режим</strong>",
                    "切り替え先：<strong>ライトモード</strong>",
                    "로 전환 : <strong>라이트 모드</strong>"
                ][_lang],
                2000, true);
        }

        // 延时再开始，以便让UI先完成更新
        setTimeout(adjustColorScheme, 500);
    }

    /**
     * 更新颜色方案UI
     */
    function updateColorSchemeUI() {
        if (_colorScheme == "dark") {
            // 调整模式切换按钮图标
            $(".mdx-btn-color-scheme").html(
                "<svg width='18px' height='18px'><use xlink:href='#icoDarkMode' class='mdx-svg-ico-light'/></svg>");
        } else {
            // 调整模式切换按钮图标
            $(".mdx-btn-color-scheme").html(
                "<svg width='20px' height='20px'><use xlink:href='#icoLightMode' class='mdx-svg-ico-light'/></svg>");
        }
    }

    /**
     * 根据浏览器当前的颜色方案进行适配
     */
    function adjustColorScheme() {
        const varList = [
            "--doc-bg-color",
            "--doc-bg-color-alt",
            "--doc-bg-color-alt-transparent",
            "--fore-color",
            "--tips-bg-color",
            "--tips-bg-color-inset",
            "--shadow-color",
            "--a-color",
            "--a-line-color",
            "--a-active-color",
            "--theme-bg-color-fade",
            "--footer-note-bg-color",
            "--table-border-color",
            "--table-th-bg-color",
            "--table-th-border-color",
            "--img-dark-filter",
            "--del-color",
            "--toc-header-num-color",
            "--content-header-num-color",
            "--header-color",
            "--header-box-shadow",
            "--header-bg-start-color",
            "--header-bg-end-color",
            "--code-bg-color",
            "--code-bg-color-transparent",
            "--code-name-bg-color",
            "--code-name-shadow-color",
            "--master-color",
            "--slave-color",
            "--third-color",
            "--fourth-color",
            "--fifth-color",
            "--sixth-color",
            "--mermaid-master-color",
            "--mermaid-master-color-alt",
            "--mermaid-slave-color",
            "--mermaid-slave-color-alt",
            "--mermaid-third-color",
            "--mermaid-third-color-alt",
            "--mermaid-fourth-color",
            "--mermaid-fourth-color-alt",
            "--mermaid-fifth-color",
            "--mermaid-fifth-color-alt",
            "--mermaid-sixth-color",
            "--mermaid-sixth-color-alt"
        ];

        // 遍历所有变量实现ColorScheme切换
        for (let i = 0; i < varList.length; i++) {
            document.documentElement.style.setProperty(varList[i], getComputedStyle(document.documentElement)
                .getPropertyValue(varList[i] + "-" + _colorScheme));
        }

        adjustImageInverInDarkMode();

        updateColorSchemeUI();
    }

    /**
     * 适配指定图片在 Dark Mode 的反转处理
     */
    function adjustImageInverInDarkMode() {
        if (_colorScheme == "dark") {
            // 应用Dark模式的插图背景
            $(".md-diagram-panel svg").addClass("mdx-figure-bg-dark");

            $("img[vlook-invert=in-dark]").addClass("mdx-img-invert-in-dark");
        } else {
            // 恢复Light模式插图背景
            $(".md-diagram-panel svg").removeClass("mdx-figure-bg-dark");

            $("img[vlook-invert=in-dark]").removeClass("mdx-img-invert-in-dark");
        }
    }

    /**
     * 大纲是否已显示
     */
    function isOutlineShowed() {
        return _outlineShowed;
    }

    /**
     * 增强脚注
     */
    function initFooterNote() {
        let fontnotesArea = $(".footnotes-area");
        // 将脚注调整到封底前
        fontnotesArea.insertBefore($("#write > h6:last"));

        // 移除默认的跳转属性
        let aFontnote = $("a[name^='ref-footnote-']");
        aFontnote.removeAttr("href");

        // 将脚注角标的事件替换为指定的处理事件
        let fontnoteContent = $(".mdx-footer-note-content");
        let fontnoteToolbar = $(".mdx-footer-note-toolbar");
        aFontnote.click(function () {
            var obj = $("a[name='df" + $(this).attr("name") + "']").parent().clone();

            // 更新脚注弹层内容
            fontnoteContent.html(obj);
            obj.find("a[name^='dfref-footnote']")[0].remove(); // 移除默认的返回链接

            // 显示脚注弹层
            showFooterNote();

            updateScroolBottomShadow(fontnoteContent, fontnoteToolbar, 30);
        });

        // outline内容滚动时，根据内容是否滚动未结束，未结束时添加阴影效果
        $(".mdx-footer-note-content").scroll(function () {
            updateScroolBottomShadow(fontnoteContent, fontnoteToolbar, 30);
        });

        // 将脚注区锚点调整到生成HTML后的实际位置
        $("a[name='xFooterArea']").insertBefore(fontnotesArea);
    }

    /**
     * 更新聚光灯显示
     */
    function repaintSpotlight(e) {
        let spot = $(".mdx-spotlight");
        spot.css("background", "radial-gradient(circle at " +
            _spotlightX + "px " + _spotlightY + "px, " +
            "rgba(0, 0, 0, 0) " + _spotlightR + "px, " +
            "rgba(0, 0, 0, 0.7)" + (_spotlightR + 1) + "px)");
    }

    /**
     * 显示脚注弹层
     */
    function showFooterNote() {
        let footerNote = $(".mdx-footer-note");
        showMask(footerNote, hideFooterNote);

        if (isSmallScreen())
            footerNote.css({
                "left": "20px",
                "right": "20px"
            });
        else
            footerNote.css({
                "left": "15%",
                "right": "15%"
            });

        footerNote.show().animate({
            bottom: 80 + _reboundOffset
        }, _animateSpeed).animate({
            bottom: 80
        }, _animateSpeed);
    }

    /**
     * 冻结文档，不允选择和滚动
     */
    function freezeScroll() {
        $("body").css({
            // "user-select": "none", // 禁用网页选择
            "overflow": "hidden" // 禁用网页滚动
        });
    }

    /**
     * 显示遮罩
     */
    function showMask(under, callback) {
        freezeScroll();

        // 显示遮罩
        let mask = $(".mdx-mask");
        mask.css("z-index", under.css("z-index") - 1);
        mask.on("click", callback);
        mask.fadeIn(_animateSpeed);
    }

    /**
     * 解冻文档，恢复选择和滚动
     */
    function unfreezeScroll() {
        $("body").css({
            "user-select": "text", // 恢复网页选择
            "overflow": "auto" // 恢复网页滚动
        });
    }

    /**
     * 隐藏遮罩
     */
    function hideMask() {
        unfreezeScroll();

        // 隐藏遮罩
        let mask = $(".mdx-mask");
        mask.off("click");
        mask.fadeOut(_animateSpeed);
    }

    /**
     * 隐藏脚注弹层
     */
    function hideFooterNote() {
        let footerNote = $(".mdx-footer-note");
        footerNote.animate({
            bottom: -150
        }, _animateSpeed, function () {
            hideMask();
            $(this).hide();
        });
    }

    /**
     * 初始化热键
     */
    function initHotkeys() {
        // 键盘按下事件
        $(document).keydown(function (event) {
            const code = event.keyCode || event.which || event.charCode;
            // console.log(code);
console.log(_blockFocusItemIndex);
            // 按了组合键时忽略
            if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey)
                return;

            switch (code) {
                case 74: // J
                    nextBlockFocusItem(1); // 步长1
                    break;
                case 75: // K
                    prevBlockFocusItem(1); // 步长1
                    break;
                case 72: // H
                    prevBlockFocusItem(10); // 步长10，快速移动
                    break;
                case 76: // L
                    nextBlockFocusItem(10); // 步长10，快速移动
                    break;
                case 188: // <
                case 37: // ←
                    if ($(".mdx-figure-viewer").css("display") == "block")
                        prevFigure();
                    else
                        gotoHeader($(".mdx-nav-prev-text"));
                    break;
                case 190: // >
                case 39: // →
                    if ($(".mdx-figure-viewer").css("display") == "block")
                        nextFigure();
                    else {
                        if (parseInt($(".mdx-bread-nav").css("top")) < 0)
                            $(".mdx-nav-next-text").attr("data-anchor", _headers[0]);
                        gotoHeader($(".mdx-nav-next-text"));
                    }
                    break;
                case 79: // O
                    hideFigureViewer();
                    toggleOutline();
                    break;
                case 73: // I
                    hideOutline();
                    if ($(".mdx-figure-viewer").css("display") == "none")
                        showFigureViewer();
                    else
                        hideFigureViewer();
                    break;
                case 84: // T
                    toggleColorShmeme();
                    break;
                case 65: // A
                    toggleFontStyle();
                    break;
                case 80: // P
                    printDocument();
                    break;
                case 83: // S
                    toggleSpotlight();
                    break;
                case 13: // ENTER
                    if (_blockFocusItemIndex > -1) {
                        var obj = $("#mdx-blockfocus-" + _blockFocusItemIndex);
                        if (obj.attr("class").indexOf("mdx-blockquote-folder") != -1)
                            obj.click();
                    }
                    break;
                case 27: // ESC
                    var spot = $(".mdx-spotlight");
                    hideTips($(".mdx-tool-tips"), true);
                    hideTips($(".mdx-info-tips"), true);
                    if (spot.css("display") == "block")
                        spot.hide();
                    else if ($(".mdx-figure-viewer").css("display") == "block")
                        hideFigureViewer();
                    else {
                        if (isOutlineShowed())
                            hideOutline();

                        hideTableCross();

                        hideBlockFocus();
                        _enableBlockFocus = false;
                    }
                    break;
                case 90: // Z
                    _spotlightR = _spotlightR > 180 ? 180 : 240;
                    repaintSpotlight();
                    break;
            }
        });
    }

    /**
     * 隐藏聚焦内容块
     */
    function hideBlockFocus() {
        if (_lastBlockFocusItem != null)
            _lastBlockFocusItem.removeClass("mdx-current-blockfocus-item");
        _lastBlockFocusItem = null;
    }

    /**
     * 获取url中的参数
     */
    function getQueryString(urlqs) {
        let qs = urlqs.substr(1), // 获取url中"?"符后的字串
            args = {}, // 保存参数数据的对象
            items = (qs.length > 0) ? qs.split("&") : [], // 取得每一个参数项,
            item = null,
            len = items.length;

        for (let i = 0; i < len; i++) {
            item = items[i].split("=");
            let name = decodeURIComponent(item[0]),
                value = decodeURIComponent(item[1]);
            if (name) {
                args[name] = value;
            }
        }
        return args;
    }

    /**
     * 关闭
     */
    function closeLoadingScreen() {
        unfreezeScroll();
        $(".mdx-loading").fadeOut(_animateSpeed);
    }

    /**
     * 打印文档
     */
    function printDocument() {
        // 若当前为 Dark 模式则强制临时切换为 Light 模式
        if (_colorScheme == "dark") {
            _colorSchemeBeforePrint = _colorScheme;
            _colorScheme = "light";
            adjustColorScheme();
        }
        window.print();
    }

    /**
     * 初始化 VLOOK
     */
    function initVLOOK(colorScheme) {
        // 锁定滚动
        freezeScroll();

        // 初始化国际化UI
        initUIi18n();

        // 检查页内链接坏链
        checkInnerBadLink();
        // 检查重复的Header
        checkDuplicateHeader();

        // 初始化插图数据
        initFigureData();
        console.log("init FigureData " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 初始化列表
        initBlockFocus();
        console.log("init BlockFocus " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 初始化表格
        initTable();
        console.log("init Table " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 初始化引用块
        initBlockquote();
        console.log("init Blockquote " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 初始化外部链接
        initExtLink();
        console.log("init ExtLink " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 增强脚注
        initFooterNote();
        console.log("init FooterNote " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 初始化全局热键
        initHotkeys();
        console.log("init Hotkeys " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 重置脚本化图表样式
        restyleMermaidStyle();
        console.log("init MermaidStyle " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 重置行内代码code样式
        restyleCode();
        // 重置多行代码块code block样式
        restyleCodeFences();
        console.log("init RestyleCode/Fences " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 重置任务列表样式
        restyleTaskListCheckbox();
        console.log("init TaskListCheckbox " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 初始化Outline数据
        if (initOutlineData()) {
            // 更新Outline上的目录节点按钮
            initFolderButton();

            // 更新工具栏标题
            $(".mdx-toc-box-title").text($(document).attr("title"));

            // 自适应页面内容显示
            followHeader();
            adjustBreadNav();
            adjustToolbar();

            console.log("init OutlineData " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
            _lastTimer = new Date().getTime();
        }

        // 根据设备类型自适应hover样式
        adjustHoverStyle();
        console.log("init Hover Style " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 设置字体样式
        const style = localStorage["VLOOK-" + _version + "-font-style"];
        if (window.localStorage && style != undefined)
            applyFontStyle(style);
        else
            applyFontStyle("serif");
        console.log("init Font Style " + ((new Date().getTime() - _lastTimer) / 1000) + "s");
        _lastTimer = new Date().getTime();

        // 隐藏插图动作按钮
        hideFigureAction(null);

        // 绑定文档鼠标移动事件，聚光灯跟随鼠标移动
        document.addEventListener("mousemove", function () {
            let spotlight = $(".mdx-spotlight");
            const e = window.event;
            _spotlightX = e.clientX;
            _spotlightY = e.clientY;
            if (spotlight.css("display") == "block") {
                repaintSpotlight();
            }
        });

        // 绑定文档的滚动事件
        $(document).scroll(function () {
            followHeader();

            let tb = $(".mdx-toolbar");
            // 如果回到文档开始位置
            if ($(document).scrollTop() <= 10) {
                tb.css({
                    top: 10
                });
            } else if (isFallInHeaders() == false) {
                tb.css({
                    top: 0
                });
            }
        });

        // 绑定窗口大小缩放事件
        $(window).resize(function () {
        });

        // 绑定打印前的触发事件
        window.onbeforeprint = function() {
        };
        // 绑定打印后的触发事件
        window.onafterprint = function() {
            if (_colorSchemeBeforePrint == "dark") {
                _colorScheme = _colorSchemeBeforePrint;
                adjustColorScheme();
            }
        };

        // 清空历史存储
        if (getQueryString(location.search)["reset"] == "ls") {
            console.log("!!! Reset Local Storage !!!");
            localStorage.removeItem("VLOOK-" + _version + "-hint-for-green-hand-step-bf");
        }

        console.log("[ DONE ] Total " + ((new Date().getTime() - _startTimer) / 1000) + "s");

        let loadDone = $(".mdx-loading-done");
        loadDone.animate({
            opacity: 1
        }, _animateSpeed, function () {
            $(".mdx-loading").css("cursor", "default");
        });

        loadDone.text(["轻一点，轻轻一点",
            "輕一點，輕輕一點",
            "Click to Start",
            "Cliquez pour commencer",
            "Нажмите, чтобы начать",
            "クリックして開始",
            "클릭하여 시작"
        ][_lang]);
        loadDone.css("cursor", "pointer");
        loadDone.click(function () {
            closeLoadingScreen();
        });
        // 完成加载后自动延时关闭欢迎屏
        setTimeout(closeLoadingScreen, 5000);

        // 应用于在新标签中打开内容时初始化颜色模式
        if (colorScheme != null)
            _colorScheme = colorScheme;
    }

    /**
     * HTML文档加载完成后执行主流程
     */
    $(document).ready(function () {
        // 显示环境信息
        displayEnvInfo();

        // 显示当前设备的DPR值
        console.log("DPR (Device Pixel Ratio): " + getDPR());

        // 推荐的浏览器类型检测
        if (env.browser.chrome == false &&
            env.browser.firefox == false &&
            env.browser.safari == false) {
            alert(["为获得最佳兼容性，建议使用 Chrome / Firefox / Safari 浏览器",
                "為獲得最佳兼容性，建議使用 Chrome / Firefox / Safari / Safari 瀏覽器",
                "For best compatibility, we recommend using Chrome / Firefox / Safari",
                "Pour une meilleure compatibilité, nous vous recommandons d’utiliser Chrome / Firefox / Safari",
                "Для лучшей совместимости мы рекомендуем использовать Chrome / Firefox / Safari",
                "最高の互換性を得るために、 Chrome / Firefox / Safari の使用をお勧めします",
                "최상의 호환성을 위해 Chrome / Firefox / Safari 사용을 권장합니다."
            ][_lang]);
        }

        // 推荐的浏览器版本号检测
        let readyForBackgroundBlurs = false
        if (env.browser.chrome == true && parseInt(env.browserVersion.chrome) >= 76)
            readyForBackgroundBlurs = true;
        else if (env.browser.safari == true && parseInt(env.browserVersion.safari) >= 9)
            readyForBackgroundBlurs = true;
        if (readyForBackgroundBlurs == false) {
            alert(["浏览器版本过低（Chrome 76.0+, Safari 9.0+, Firefox 不支持），不支持部分界面的毛玻璃效果",
                "瀏覽器版本過低（Chrome 76.0+, Safari 9.0+, Firefox 不支持），不支持部分界面的毛玻璃效果",
                "Browser version is too low (Chrome 76.0+, Safari 9.0+, Firefox does not support), does not support the frosted glass effect of some interfaces",
                "La version du navigateur est trop basse (Chrome 76.0+, Safari 9.0+, Firefox ne prend pas en charge), ne prend pas en charge l'effet de verre dépoli de certaines interfaces",
                "Версия браузера слишком низкая (Chrome 76.0+, Safari 9.0+, Firefox не поддерживает), не поддерживает эффект матового стекла некоторых интерфейсов",
                "ブラウザのバージョンが低すぎる（Chrome 76.0以降、Safari 9.0以降、Firefoxはサポートしていません）、一部のインターフェイスのつや消しガラス効果をサポートしていません",
                "브라우저 버전이 너무 낮습니다 (Chrome 76.0 이상, Safari 9.0 이상, Firefox는 지원하지 않음). 일부 인터페이스의 젖빛 유리 효과를 지원하지 않습니다"
            ][_lang]);
        }

        // 初始化 VLOOK
        console.log("init VLOOK ...");
        initVLOOK();

        // 因默认配色为Light模式，若浏览器当前配色为Dark模式，则进行初始化适配
        _colorScheme = getComputedStyle(document.documentElement).getPropertyValue("--vlook-color-scheme")
            .replaceAll("\"", "").trim();
        console.log("Color Scheme: " + _colorScheme);
        if (_colorScheme == "dark")
            updateColorSchemeUI();

        adjustImageInverInDarkMode();
    });
</script>
<!--========================================================================-->
<!--                                                                        -->
<!--                                                                        -->
<!--                              END OF VLOOK                              -->
<!--                                                                        -->
<!--                                                                        -->
<!--========================================================================-->
<div  id='write'  class = 'is-mac'><h6><a name="supvlook™supbr快速参考手册-quick-reference-manualbr──brbr-版本丨v92-brbrbrbrbrmaxbrcopyright-©-2016-2019-max°design" class="md-header-anchor"></a><sup><span>VLOOK™</span></sup><br><span>快速参考手册 Quick Reference Manual</span><br><span>──</span><br><br><code>+ 版本丨V9.2 +</code><br><br><br><br><br><strong><span>Max</span></strong><br><em><span>COPYRIGHT © 2016-2019. MAX°DESIGN.</span></em></h6><div class='md-toc' mdtype='toc'><p class="md-toc-content" role="list"><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n0"><a class="md-toc-inner" style="" href="#supvlook™supbr快速参考手册-quick-reference-manualbr──brbr-版本丨v92-brbrbrbrbrmaxbrcopyright-©-2016-2019-max°design">VLOOK™&lt;br&gt;快速参考手册 Quick Reference Manual&lt;br&gt;──&lt;br&gt;&lt;br&gt;<code>+ 版本丨V9.2 +</code>&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;<strong>Max</strong>&lt;br&gt;<em>COPYRIGHT © 2016-2019. MAX°DESIGN.</em></a></span><span role="listitem" class="md-toc-item md-toc-h1" data-ref="n3"><a class="md-toc-inner" style="" href="#vlook™-是什么">VLOOK™ 是什么</a></span><span role="listitem" class="md-toc-item md-toc-h1" data-ref="n30"><a class="md-toc-inner" style="" href="#特性介绍">特性介绍</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n31"><a class="md-toc-inner" style="" href="#排版增强-n31">排版增强</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n32"><a class="md-toc-inner" style="" href="#主题样式">主题样式</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n49"><a class="md-toc-inner" style="" href="#封面封底">封面、封底</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n50"><a class="md-toc-inner" style="" href="#封面">封面</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n75"><a class="md-toc-inner" style="" href="#封底">封底</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n82"><a class="md-toc-inner" style="" href="#light--dark-模式">Light / Dark 模式</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n87"><a class="md-toc-inner" style="" href="#指定图片在-dark-模式时反色">指定图片在 Dark 模式时反色</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n95"><a class="md-toc-inner" style="" href="#图片默认情况下长这样">图片默认情况下长这样：</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n97"><a class="md-toc-inner" style="" href="#指定切换至-dark-模式后反色会长这样">指定切换至 Dark 模式后反色，会长这样：</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n99"><a class="md-toc-inner" style="" href="#标题自动编号">标题自动编号</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n105"><a class="md-toc-inner" style="" href="#统一多级列表编号">统一多级列表编号</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n109"><a class="md-toc-inner" style="" href="#列表分级编号样式预览">列表分级编号样式预览：</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n131"><a class="md-toc-inner" style="" href="#增强表格排版与交互">增强表格排版与交互</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n132"><a class="md-toc-inner" style="" href="#单元格合并">单元格合并</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n139"><a class="md-toc-inner" style="" href="#示例一">示例一</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n197"><a class="md-toc-inner" style="" href="#示例二">示例二</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n231"><a class="md-toc-inner" style="" href="#示例三">示例三</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n265"><a class="md-toc-inner" style="" href="#表格行自动编号">表格行自动编号</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n306"><a class="md-toc-inner" style="" href="#这是6级标题">这是6级标题</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n323"><a class="md-toc-inner" style="" href="#列格式增强">列格式增强</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n330"><a class="md-toc-inner" style="" href="#示例效果">示例效果</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n360"><a class="md-toc-inner" style="" href="#单元格十字聚焦">单元格十字聚焦</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n364"><a class="md-toc-inner" style="" href="#在新标签中打开表格">在新标签中打开表格</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n369"><a class="md-toc-inner" style="" href="#自动添加图注表注">自动添加图注、表注</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n382"><a class="md-toc-inner" style="" href="#更美观的图表">更美观的图表</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n388"><a class="md-toc-inner" style="" href="#mermaid－流程图">mermaid－流程图</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n391"><a class="md-toc-inner" style="" href="#mermaid－状态图">mermaid－状态图</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n393"><a class="md-toc-inner" style="" href="#mermaid－时序图">mermaid－时序图</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n396"><a class="md-toc-inner" style="" href="#彩虹标签">彩虹标签</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n399"><a class="md-toc-inner" style="" href="#单标签风格">单标签风格</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n439"><a class="md-toc-inner" style="" href="#双标签风格-n439">双标签风格</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n499"><a class="md-toc-inner" style="" href="#多行代码">多行代码</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n501"><a class="md-toc-inner" style="" href="#更实用的任务列表">更实用的任务列表</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n514"><a class="md-toc-inner" style="" href="#更美观的公式">更美观的公式</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n515"><a class="md-toc-inner" style="" href="#行内公式">行内公式</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n517"><a class="md-toc-inner" style="" href="#多行公式">多行公式</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n519"><a class="md-toc-inner" style="" href="#打印样式">打印样式</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n523"><a class="md-toc-inner" style="" href="#功能增强-n523">功能增强</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n524"><a class="md-toc-inner" style="" href="#文档导航plus">文档导航Plus</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n525"><a class="md-toc-inner" style="" href="#大纲导航">大纲导航</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n532"><a class="md-toc-inner" style="" href="#逐章导航">逐章导航</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n541"><a class="md-toc-inner" style="" href="#文档评审演示辅助">文档评审/演示辅助</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n542"><a class="md-toc-inner" style="" href="#聚光灯">聚光灯</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n548"><a class="md-toc-inner" style="" href="#内容块聚焦-n548">内容块聚焦</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n570"><a class="md-toc-inner" style="" href="#文档插图浏览器">文档插图浏览器</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n592"><a class="md-toc-inner" style="" href="#这是普通的图片示例">这是普通的图片示例</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n594"><a class="md-toc-inner" style="" href="#自动识别缺失的图片">自动识别缺失的图片</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n599"><a class="md-toc-inner" style="" href="#支持折叠引用内容">支持折叠引用内容</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n625"><a class="md-toc-inner" style="" href="#更友好的脚注体验">更友好的脚注体验</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n634"><a class="md-toc-inner" style="" href="#切换字体样式-n634">切换字体样式</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n647"><a class="md-toc-inner" style="" href="#链接管理">链接管理</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n648"><a class="md-toc-inner" style="" href="#外链强制新标签打开">外链强制新标签打开</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n652"><a class="md-toc-inner" style="" href="#内链有效性检查">内链有效性检查</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n653"><a class="md-toc-inner" style="" href="#无效内链">无效内链</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n659"><a class="md-toc-inner" style="" href="#重名章节标题">重名章节标题</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n665"><a class="md-toc-inner" style="" href="#热键操作">热键操作</a></span><span role="listitem" class="md-toc-item md-toc-h1" data-ref="n715"><a class="md-toc-inner" style="" href="#如何使用">如何使用</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n716"><a class="md-toc-inner" style="" href="#打赏">打赏</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n717"><a class="md-toc-inner" style="" href="#若喜欢-vlook™-的话可以请-max-喝杯咖啡～">若喜欢 VLOOK™ 的话，可以请 Max 喝杯咖啡～</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n719"><a class="md-toc-inner" style="" href="#下载插件">下载插件</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n725"><a class="md-toc-inner" style="" href="#应用主题">应用主题</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n733"><a class="md-toc-inner" style="" href="#应用插件">应用插件</a></span><span role="listitem" class="md-toc-item md-toc-h1" data-ref="n748"><a class="md-toc-inner" style="" href="#许可协议-n748">许可协议</a></span><span role="listitem" class="md-toc-item md-toc-h6" data-ref="n751"><a class="md-toc-inner" style="" href="#终了br">终了&lt;br&gt;</a></span></p></div><h1><a name="vlook™-是什么" class="md-header-anchor"></a><span>VLOOK™ 是什么</span></h1><p><code>最新版本丨V9.2</code><span>    </span><code>+ 官网丨https://github.com/madmaxchow/VLOOK +</code><span>    </span><code>* 适用平台丨Typora for Win &amp; macOS *</code><span>    </span><code>- 开源协议丨MIT -</code><span>   </span><code>! 开发语言丨JavaScript !</code></p><p><a href='https://github.com/MadMaxChow/VLOOK'><span>VLOOK™</span></a><span> 是针对由</span><a href='https://www.typora.io'><span>Typora</span></a><sup class='md-footnote'><a href='#dfref-footnote-1' name='ref-footnote-1'>1</a></sup><span>导出的 HTML 文件进行增强的插件。VLOOK™ 为开源软件，遵从 </span><a href='#许可协议'><span>MIT 许可证</span></a><span>。</span></p><p><span>VLOOK 插件主要包括：</span></p><ul><li><strong><span>排版增强</span></strong><span>：针对 Typora 编辑模式，以及导出的 HTML 文件增加更实用、美观的文档排版与样式（详见</span><a href='#排版增强'><span>这里</span></a><span>）；</span></li><li><strong><span>功能增强</span></strong><span>：针对导出的 HTML 文件提供文档导航、评审演示、插图浏览、内容交互、信息缺失检测等功能（详见</span><a href='#功能增强'><span>这里</span></a><span>）。</span></li></ul><blockquote><p><span>[-] </span><strong><span>Markdown 是什么？</span></strong></p><blockquote><ul><li><span>2004年，</span><a href='https://en.wikipedia.org/wiki/John_Gruber'><span>John Gruber</span></a><span> 创造了 </span><a href='https://en.wikipedia.org/wiki/Markdown'><span>Markdown</span></a><span>，一种专门针对网络写作的</span><code>文本标记语言</code><span>。使用 Markdown，你只需在写作过程中插入少量的标记符号，就能很轻松地进行排版（例如设置标题、加粗、列表、引用等）。</span></li><li><span>Markdown文档以</span><code>纯文本格式存储</code><span>，这意味着，它们可以用几乎任一种文本编辑器打开。同时，又能通过 Markdown 编辑器导出为带排版的富文本文档、HTML 网页等等。纯粹、简洁、易用、灵活，都是人们喜欢 Markdown 的原因。</span></li><li><span>目前 Markdown 的标准化项目是 </span><a href='http://commonmark.org'><span>CommonMark</span></a><span>。</span></li></ul></blockquote><p><span>[+] </span><strong><span>Markdown 语法：</span></strong></p><blockquote><ol start='' ><li><span>标准化 </span><strong><span>CommonMark</span></strong><span> 语法参考：</span><a href='http://commonmark.org/help/'><span>60秒学会 Markdown 语法</span></a><span>、</span><a href='http://commonmark.org/help/tutorial/'><span>10 分钟深入学习 Markdown</span></a></li><li><span>GitHub 采用 </span><strong><span>Flavored Markdown</span></strong><span> 的语法参考：Typora 目前采用该标准  </span><a href='https://support.typora.io/Markdown-Reference/'><span>详细</span></a></li></ol></blockquote></blockquote><h1><a name="特性介绍" class="md-header-anchor"></a><span>特性介绍</span></h1><h2><a name="排版增强-n31" class="md-header-anchor"></a><span>排版增强</span></h2><h3><a name="主题样式" class="md-header-anchor"></a><span>主题样式</span></h3><p><img src="https://raw.githubusercontent.com/MadMaxChow/uploads/master/pic/vlook-theme.png" referrerpolicy="no-referrer" alt="内置主题样式"></p><ul><li><p><span>针对 VLOOK 内置多套优化的主题样式</span><sup class='md-footnote'><a href='#dfref-footnote-2' name='ref-footnote-2'>2</a></sup><span>（在导出 HTML 通过 Typora 的「主题」菜单选择名称以 VLOOK 打头的主题）；</span></p><ul><li><strong><span>Hope 海洋之心</span></strong><span>：</span><a href='https://madmaxchow.github.io/VLOOK/index.html'><span>预览 ＞</span></a></li><li><strong><span>Joint 榫卯</span></strong><span>：</span><a href='https://madmaxchow.github.io/VLOOK/theme-joint.html'><span>预览 ＞</span></a></li><li><strong><span>Geek 极邃</span></strong><span>：</span><a href='https://madmaxchow.github.io/VLOOK/theme-geek.html'><span>预览 ＞</span></a></li><li><strong><span>Fancy 慕幻</span></strong><span>：</span><a href='https://madmaxchow.github.io/VLOOK/theme-fancy.html'><span>预览 ＞</span></a></li></ul></li><li><p><span>所有主题的文档导出为 HTML 后，都支持</span><code>Light (明亮)</code><span>与</span><code>Dark (黑暗)</code><span>模式。</span></p></li></ul><h3><a name="封面封底" class="md-header-anchor"></a><span>封面、封底</span></h3><h6><a name="封面" class="md-header-anchor"></a><span>封面</span></h6><ul><li><p><span>封面样式支持多个信息项，包括：</span><strong><span>标题</span></strong><span>、</span><strong><span>文档类型/密级</span></strong><span>、</span><strong><span>作者</span></strong><span>、</span><strong><span>版权信息</span></strong><span>；</span></p></li><li><p><span>封面必须以</span><code>6级标题</code><span>（</span><kbd><span>Ctrl</span></kbd><span>+</span><kbd><span>6</span></kbd><span>）作为整篇文章的</span><code>第1个</code><span>章节，同时各信息项的顺序与格式规则建议如下（可视实际需要自行调整）：</span></p><ul><li><p><strong><span>标题</span></strong><span>：无须指定格式标记，直接输入</span></p></li><li><p><strong><span>文档类型/密级</span></strong><span>：使用 Markdown 的代码格式标记</span><code>`</code><span>，同时支持 VLOOK 的</span><a href='#双标签风格'><span>双标签风格</span></a><span>写法，应用举例如下：</span></p><ul><li><code>+ 文档密级丨对外公开 +</code></li><li><code>* 文档密级丨内部公开 *</code></li><li><code>- 文档密级丨机密资料 -</code></li></ul></li><li><p><strong><span>作者</span></strong><span>：使用粗体格式标记</span><code>**作者**</code><span>（插件会自动增加</span><code>by</code><span>前缀）</span></p></li><li><p><strong><span>版权信息</span></strong><span>：使用 Markdown 的斜体格式标记</span><code>*版权信息*</code></p></li></ul></li><li><p><span>样式见本文的封面，完整示例参考如下（其中</span><code>&lt;br&gt;</code><span>为换行符号，可选）：</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">### 此处为标题1&lt;br&gt;此处为标题2&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;u&gt;此处为作者姓名&lt;/u&gt;&lt;br&gt;*此处为版权信息*</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 26px;"></div><div class="CodeMirror-gutters" style="display: none; height: 26px;"></div></div></div></pre></li></ul><h6><a name="封底" class="md-header-anchor"></a><span>封底</span></h6><ul><li><p><span>以最后一个</span><code>6级标题</code><span>作为封底；</span></p></li><li><p><span>样式见本文的封底，完整示例参考如下：</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">###### 此处为封底</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 26px;"></div><div class="CodeMirror-gutters" style="display: none; height: 26px;"></div></div></div></pre></li></ul><h3><a name="light--dark-模式" class="md-header-anchor"></a><span>Light / Dark 模式</span></h3><ul><li><span>根据浏览器的配置，自动适配 Light / Dark 模式，也支持手动方式进行切换。</span></li></ul><p><img src="https://raw.githubusercontent.com/MadMaxChow/uploads/master/pic/vlook-color-scheme-preview.png" referrerpolicy="no-referrer" alt="Light / Dark 模式"></p><h3><a name="指定图片在-dark-模式时反色" class="md-header-anchor"></a><span>指定图片在 Dark 模式时反色</span></h3><ul><li><span>图片默认在 Dark 模式时按原始颜色显示，对于一些透明底的 PNG 图片（如界面线框图），可指定在 Dark 模式时以反色显示以获得更好的显示效果；</span></li><li><span>对不起要在在 Dark 模式中以反色显示的图片，可在图片地址末尾增加反色标识</span><code>?invert=in-dark</code><span>；</span></li><li><span>举例： </span><code>![图注](xxxxx.jpg?invert=in-dark)</code></li></ul><h6><a name="图片默认情况下长这样" class="md-header-anchor"></a><span>图片默认情况下长这样：</span></h6><p><img src="https://raw.githubusercontent.com/MadMaxChow/uploads/master/pic/img-invert-in-dark.png" referrerpolicy="no-referrer" alt="不指定在 Dark 模式时反色"></p><h6><a name="指定切换至-dark-模式后反色会长这样" class="md-header-anchor"></a><span>指定切换至 Dark 模式后反色，会长这样：</span></h6><p><img src="https://raw.githubusercontent.com/MadMaxChow/uploads/master/pic/img-invert-in-dark.png?invert=in-dark" referrerpolicy="no-referrer" alt="指定在 Dark 模式时反色"></p><h3><a name="标题自动编号" class="md-header-anchor"></a><span>标题自动编号</span></h3><ul><li><span>自动对 </span><strong><span>1 级 ~ 5 级</span></strong><span>标题进行自动编号；</span></li><li><strong><span>6 级</span></strong><span>标题在 VLOOK 中作特殊用途，不在自动编号范围内。</span></li></ul><h3><a name="统一多级列表编号" class="md-header-anchor"></a><span>统一多级列表编号</span></h3><ul><li><span>对所有</span><strong><span>有序</span></strong><span>、</span><strong><span>无序</span></strong><span>的多级列表编号进行统一编号符号。</span></li></ul><h6><a name="列表分级编号样式预览" class="md-header-anchor"></a><span>列表分级编号样式预览：</span></h6><ul><li><p><span>一级列表内容</span></p><ul><li><p><span>二级列表内容</span></p><ul><li><p><span>三级列表内容</span></p><ul><li><p><span>四级列表内容</span></p><ul><li><p><span>五级列表内容</span></p><ul><li><span>六级列表内容</span></li></ul></li></ul></li></ul></li></ul></li></ul></li><li><p><span>用 Markdown 编写参考如下（任意写法均可），每级缩进</span><code>2</code><span>个空格：</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">- 一级列表内容</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; - 二级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; - 三级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; - 四级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; - 五级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - 六级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">1. 一级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; + 二级列表内容</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; - 三级列表内容</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 234px;"></div><div class="CodeMirror-gutters" style="display: none; height: 234px;"></div></div></div></pre></li></ul><h3><a name="增强表格排版与交互" class="md-header-anchor"></a><span>增强表格排版与交互</span></h3><h4><a name="单元格合并" class="md-header-anchor"></a><span>单元格合并</span></h4><ul><li><strong><span>列合并</span></strong><span>：直接填写三个英文等号</span><code>==</code><span>进行标识；</span></li><li><strong><span>行合并</span></strong><span>：直接填写三个英文句号</span><code>..</code><span>进行标识，并支持列头跨行合并。</span></li></ul><p><code>- 注意 -</code><span>该特性须导出 HTML 并加入插件代码后才能生效。</span></p><h6><a name="示例一" class="md-header-anchor"></a><span>示例一</span></h6><figure><table><thead><tr><th><span>普通列头</span></th><th><code>标签丨测试</code><span>列合并（2列）</span></th><th><span>==</span></th><th><span>行合并（2行）</span></th><th><span>列合并（3列）</span></th><th><span>==</span></th><th><span>==</span></th></tr></thead><tbody><tr><td><strong><span>行合并（3行）</span></strong></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><strong><span>跨行（全合并）</span></strong></td></tr><tr><td><span>..</span></td><td><strong><span>行合并（2行）</span></strong><code>标签丨测试</code></td><td><strong><span>列合并（4列）</span></strong></td><td><span>==</span></td><td><span>==</span></td><td><span>==</span></td><td><span>..</span></td></tr><tr><td><span>..</span></td><td><span>..</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>..</span></td></tr><tr><td><span>普通单元格</span></td><td><strong><span>行合并（3行）</span></strong></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>..</span></td></tr><tr><td><span>普通单元格</span></td><td><span>..</span></td><td><code>标签丨测试</code><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>..</span></td></tr><tr><td><span>普通单元格</span></td><td><span>..</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>..</span></td></tr></tbody></table></figure><h6><a name="示例二" class="md-header-anchor"></a><span>示例二</span></h6><figure><table><thead><tr><th><span>列头行合并（2行）</span></th><th><span>列头列合并（2列）</span></th><th><span>==</span></th><th style='text-align:center;' ><span>列头行合并（2行）</span></th><th><span>列头列合并（3列）</span></th><th><span>==</span></th><th><span>==</span></th></tr></thead><tbody><tr><td><span>..</span></td><td><span>二级列头</span></td><td><span>二级列头</span></td><td style='text-align:center;' ><span>..</span></td><td><span>二级列头</span></td><td><span>二级列头</span></td><td><span>二级列头</span></td></tr><tr><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td style='text-align:center;' ><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td></tr><tr><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td style='text-align:center;' ><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td></tr></tbody></table></figure><h6><a name="示例三" class="md-header-anchor"></a><span>示例三</span></h6><figure><table><thead><tr><th><span>列头行合并（2行）</span></th><th><span>列头行合并（3列）</span></th><th><span>列头列合并（3列）</span></th><th style='text-align:center;' ><span>==</span></th><th><span>==</span></th><th><span>普通列头</span></th><th><span>普通列头</span></th></tr></thead><tbody><tr><td><span>..</span></td><td><span>..</span></td><td><span>二级列头1</span></td><td style='text-align:center;' ><span>二级列头2</span></td><td><span>二级列头3</span></td><td><span>..</span></td><td><span>..</span></td></tr><tr><td><span>..</span></td><td><span>..</span></td><td><span>三级列头1</span></td><td style='text-align:center;' ><span>三级列头2</span></td><td><span>三级列头3</span></td><td><span>..</span></td><td><span>..</span></td></tr><tr><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td style='text-align:center;' ><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td><td><span>普通单元格</span></td></tr></tbody></table></figure><h4><a name="表格行自动编号" class="md-header-anchor"></a><span>表格行自动编号</span></h4><ul><li><p><span>在表格自动编号会在以下两种情况下生效：</span></p></li><li><p><span>在</span><strong><span>有序/无序列表</span></strong><span>下（</span><strong><span>注意须先缩进一级</span></strong><span>）：</span></p><figure><table><thead><tr><th><span>列1</span></th><th><span>列2</span></th><th style='text-align:center;' ><span>列3</span></th><th style='text-align:right;' ><span>列4</span></th></tr></thead><tbody><tr><td><span>第一行</span></td><td><span>左对齐（长内容）</span></td><td style='text-align:center;' ><span>居中对齐</span></td><td style='text-align:right;' ><span>右对齐（长内容）</span></td></tr><tr><td><span>第二行（长内容）</span></td><td><span>左对齐</span></td><td style='text-align:center;' ><span>居中对齐（长内容）</span></td><td style='text-align:right;' ><span>右对齐</span></td></tr></tbody></table></figure><h6><a name="子表" class="md-header-anchor"></a><span>子表</span></h6><figure><table><thead><tr><th><span>列1</span></th><th><span>列2</span></th><th style='text-align:center;' ><span>列3</span></th><th style='text-align:right;' ><span>列4</span></th></tr></thead><tbody><tr><td><span>第一行</span></td><td><span>左对齐（长内容）</span></td><td style='text-align:center;' ><span>居中对齐</span></td><td style='text-align:right;' ><span>右对齐（长内容）</span></td></tr><tr><td><span>第二行（长内容）</span></td><td><span>左对齐</span></td><td style='text-align:center;' ><span>居中对齐（长内容）</span></td><td style='text-align:right;' ><span>右对齐</span></td></tr></tbody></table></figure></li><li><p><span>在</span><strong><span>标题（H1~H6）</span></strong><span>下（</span><strong><span>无须不缩进</span></strong><span>）：</span></p></li></ul><h6><a name="这是6级标题" class="md-header-anchor"></a><span>这是6级标题</span></h6><figure><table><thead><tr><th><span>列1</span></th><th><span>列2</span></th><th style='text-align:center;' ><span>列3</span></th><th style='text-align:right;' ><span>列4</span></th></tr></thead><tbody><tr><td><span>第一行</span></td><td><span>左对齐（长内容）</span></td><td style='text-align:center;' ><span>居中对齐</span></td><td style='text-align:right;' ><span>右对齐（长内容）</span></td></tr><tr><td><span>第二行（长内容）</span></td><td><span>左对齐</span></td><td style='text-align:center;' ><span>居中对齐（长内容）</span></td><td style='text-align:right;' ><span>右对齐</span></td></tr></tbody></table></figure><h4><a name="列格式增强" class="md-header-anchor"></a><span>列格式增强</span></h4><ul><li><span>对表格的任意列统一格式，支持的格式包括：</span><code>**加粗**</code><span>、</span><code>*斜体*</code><span>、</span><code>&lt;u&gt;下划线&lt;/u&gt;</code><span>、</span><code>==高亮==</code><span>、</span><code>~~删除线~~</code><span>；</span></li><li><span>参考以上形式，只须在表头按标准的 Markdown 语法设置对应的格式即可实现整列格式化（暂不支持多格式的嵌套）。</span></li></ul><p><code>- 注意 -</code><span>该特性须导出 HTML 并加入插件代码后才能生效。</span></p><h6><a name="示例效果" class="md-header-anchor"></a><span>示例效果</span></h6><figure><table><thead><tr><th><span>正常</span></th><th><strong><span>加粗</span></strong></th><th style='text-align:right;' ><code>标签丨测试</code><em><span>斜体</span></em></th><th style='text-align:center;' ><u><span>下划线</span></u></th><th><span>==高亮==</span></th><th><del><span>删除线</span></del></th></tr></thead><tbody><tr><td><span>单元格</span></td><td><span>单元格</span></td><td style='text-align:right;' ><span>单元格</span></td><td style='text-align:center;' ><span>单元格</span></td><td><span>单元格</span><code>标签丨测试</code><span>单元格</span></td><td><span>单元格</span><code>标签丨测试</code><span>单元格</span></td></tr><tr><td><span>单元格</span></td><td><span>单元格</span></td><td style='text-align:right;' ><span>单元格</span></td><td style='text-align:center;' ><span>单元格</span></td><td><span>单元格内有</span><strong><span>加粗</span></strong><span>内容</span></td><td><span>单元格内有</span><strong><span>加粗</span></strong><span>内容</span></td></tr><tr><td><span>单元格</span></td><td><span>单元格</span></td><td style='text-align:right;' ><span>单元格</span></td><td style='text-align:center;' ><span>单元格</span></td><td><span>单元格内有</span><code>行内代码</code><span>内容</span></td><td><span>单元格内有</span><code>行内代码</code><span>内容</span></td></tr></tbody></table></figure><h4><a name="单元格十字聚焦" class="md-header-anchor"></a><span>单元格十字聚焦</span></h4><ul><li><span>对导出的 HTML 文件，鼠标悬停在单元格时自动高亮对应的表格整行、整列，便于在大表格时查看相关行列信息。</span></li></ul><h4><a name="在新标签中打开表格" class="md-header-anchor"></a><span>在新标签中打开表格</span></h4><ul><li><span>支持在新标签打开表格（鼠标悬念在表格时，会在左上角显示打开按钮）。</span></li></ul><p><code>- 注意 -</code><span>该特性须导出 HTML 并加入插件代码后才能生效。</span></p><h3><a name="自动添加图注表注" class="md-header-anchor"></a><span>自动添加图注、表注</span></h3><ul><li><p><span>自动为所有插图、表格添加自动编号，并生成图注或表注：</span></p><ul><li><span>图片：以图片标题为图注，如：</span><code>![图片标题](图片URL)</code></li><li><span>图表：则为取图表前的 6 级标题，如：</span><code>###### 图注、表注</code><span>，若图表前不存在 6 级标题，则忽略</span></li><li><span>表格：（同图表）</span></li></ul></li><li><p><span>效果文档中的插图底部的文字样式。</span></p></li></ul><h3><a name="更美观的图表" class="md-header-anchor"></a><span>更美观的图表</span></h3><ul><li><span>统一优化 </span><strong><span>mermaid</span></strong><span> 脚本化图表的样式；</span></li><li><span>更多脚本化图表样式，以及结合 VLOOK 相关的脚本编写规范内容详见《</span><a href='https://madmaxchow.github.io/VLOOK/chart.html'><span>脚本化图表 for Markdown</span></a><span>》。</span></li></ul><h6><a name="mermaid－流程图" class="md-header-anchor"></a><span>mermaid－流程图</span></h6><div class="md-diagram-panel"><svg id="mermaidChart28" xmlns="http://www.w3.org/2000/svg" height="100%" viewBox="0 0 844.4437484741211 366.6499996185303" style=""><style></style><style>#mermaidChart28 {
    color: rgb(224, 226, 230);
    font: normal normal normal normal 12.800000190734863px/12.800000190734863px Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, 黑体, "Heiti SC", 黑体-简, "Microsoft YaHei", 微软雅黑, monospace;
  }</style><g transform="translate(32, 32)"><g class="output"><g class="clusters"><g class="cluster" id="subGraph0" transform="translate(261.0078125,190.64999961853027)" style="opacity: 1;"><rect width="290.015625" height="184" x="-145.0078125" y="-92"></rect><g class="label"><g transform="translate(0,0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"></div></foreignObject></g></g><text x="0" y="-78" fill="black" stroke="none" id="mermaidChart28Text" style="text-anchor: middle;">子图</text></g></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M66,190.64999961853027L91,190.64999961853027L116,190.64999961853027L141,190.64999961853027" marker-end="url(#arrowhead846)" style="fill:none"></path><defs><marker id="arrowhead846" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M207.2469512195122,174.64999961853027L254.5078125,149.64999961853027L296.015625,149.64999961853027" marker-end="url(#arrowhead847)" style="fill:none"></path><defs><marker id="arrowhead847" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M207.2469512195122,206.64999961853027L254.5078125,231.64999961853027L322.515625,231.64999961853027" marker-end="url(#arrowhead848)" style="fill:none"></path><defs><marker id="arrowhead848" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M381.015625,149.64999961853027L406.015625,149.64999961853027L457.015625,149.64999961853027L508.5156257629396,150.14999961853022" marker-end="url(#arrowhead849)" style="stroke-width: 3.5px;fill:none"></path><defs><marker id="arrowhead849" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M586.0318018374713,134.06617721894116L633.1156234741211,108.64999961853027L690.0008737650065,68.25" marker-end="url(#arrowhead850)" style="fill:none"></path><defs><marker id="arrowhead850" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M591.6691967718453,160.59642860962424L633.1156234741211,172.14999961853027L681.1156234741211,172.64999961853027" marker-end="url(#arrowhead851)" style="fill:none;stroke-width:2px;stroke-dasharray:3;"></path><defs><marker id="arrowhead851" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M570.8156242370605,36L633.1156234741211,36L689.5296859741211,47.54365469749139" marker-end="url(#arrowhead852)" style="fill:none"></path><defs><marker id="arrowhead852" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(254.5078125,149.64999961853027)" style="opacity: 1;"><g transform="translate(-16.5078125,-12.5)" class="label"><foreignObject width="33.015625" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">情况1</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(254.5078125,231.64999961853027)" style="opacity: 1;"><g transform="translate(-16.5078125,-12.5)" class="label"><foreignObject width="33.015625" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">情况2</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(457.015625,149.64999961853027)" style="opacity: 1;"><g transform="translate(-26,-12.5)" class="label"><foreignObject width="52" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">重要分支</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(633.1156234741211,108.64999961853027)" style="opacity: 1;"><g transform="translate(-6.5,-12.5)" class="label"><foreignObject width="13" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">是</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(633.1156234741211,172.14999961853027)" style="opacity: 1;"><g transform="translate(-6.5,-12.5)" class="label"><foreignObject width="13" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="node1" transform="translate(177,190.64999961853027)" style="opacity: 1;"><rect rx="5" ry="5" x="-36" y="-16" width="72" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-26,-6)"><foreignObject width="52" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">普通节点</div></foreignObject></g></g></g><g class="node" id="groud1" transform="translate(338.515625,149.64999961853027)" style="opacity: 1;"><rect rx="0" ry="0" x="-42.5" y="-16" width="85" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-32.5,-6)"><foreignObject width="65" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">流程组节点</div></foreignObject></g></g></g><g class="node" id="A1" transform="translate(338.515625,231.64999961853027)" style="opacity: 1;"><circle x="-13.9140625" y="-16" r="16"></circle><g class="label" transform="translate(0,0)"><g transform="translate(-3.9140625,-6)"><foreignObject width="7.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">A</div></foreignObject></g></g></g><g class="node" id="START" transform="translate(43,190.64999961853027)" style="opacity: 1;"><rect rx="5" ry="5" x="-23" y="-16" width="46" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13,-6)"><foreignObject width="26" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">开始</div></foreignObject></g></g></g><g class="node" id="cond1" transform="translate(554.8156242370605,149.64999961853027)" style="opacity: 1;"><polygon points="46.800000000000004,0 93.60000000000001,-46.800000000000004 46.800000000000004,-93.60000000000001 0,-46.800000000000004" rx="5" ry="5" transform="translate(-46.800000000000004,46.800000000000004)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-26,-6)"><foreignObject width="52" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">条件判断</div></foreignObject></g></g></g><g class="node" id="END" transform="translate(712.5296859741211,52.25)" style="opacity: 1;"><rect rx="5" ry="5" x="-23" y="-16" width="46" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13,-6)"><foreignObject width="26" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">结束</div></foreignObject></g></g></g><g class="node" id="page2" transform="translate(712.5296859741211,172.14999961853027)" style="opacity: 1;"><polygon points="-16,0 79.828125,0 79.828125,-32 -16,-32 0,-16" transform="translate(-39.9140625,16)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-29.9140625,-6)"><foreignObject width="59.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">分支流程2</div></foreignObject></g></g></g><g class="node" id="A2" transform="translate(554.8156242370605,36)" style="opacity: 1;"><circle x="-13.9140625" y="-16" r="16"></circle><g class="label" transform="translate(0,0)"><g transform="translate(-3.9140625,-6)"><foreignObject width="7.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">A</div></foreignObject></g></g></g></g></g></g></svg></div><div class="md-diagram-panel"><svg id="mermaidChart29" xmlns="http://www.w3.org/2000/svg" height="100%" viewBox="0 0 417.828125 136" style=""><style></style><style>#mermaidChart29 {
    color: rgb(224, 226, 230);
    font: normal normal normal normal 12.800000190734863px/12.800000190734863px Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, 黑体, "Heiti SC", 黑体-简, "Microsoft YaHei", 微软雅黑, monospace;
  }</style><g transform="translate(32, 32)"><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M116.328125,36.5L140.828125,36L165.828125,36" marker-end="url(#arrowhead864)" style="fill:none"></path><defs><marker id="arrowhead864" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M237.828125,36L262.828125,36L287.828125,36" marker-end="url(#arrowhead865)" style="fill:none"></path><defs><marker id="arrowhead865" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="page2" transform="translate(67.9140625,36)" style="opacity: 1;"><polygon points="-16,0 79.828125,0 79.828125,-32 -16,-32 0,-16" transform="translate(-39.9140625,16)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-29.9140625,-6)"><foreignObject width="59.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">分支流程B</div></foreignObject></g></g></g><g class="node" id="node2" transform="translate(201.828125,36)" style="opacity: 1;"><rect rx="5" ry="5" x="-36" y="-16" width="72" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-26,-6)"><foreignObject width="52" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">普通节点</div></foreignObject></g></g></g><g class="node" id="END" transform="translate(310.828125,36)" style="opacity: 1;"><rect rx="5" ry="5" x="-23" y="-16" width="46" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13,-6)"><foreignObject width="26" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">结束</div></foreignObject></g></g></g></g></g></g></svg></div><h6><a name="mermaid－状态图" class="md-header-anchor"></a><span>mermaid－状态图</span></h6><div class="md-diagram-panel"><svg id="mermaidChart30" xmlns="http://www.w3.org/2000/svg" height="100%" viewBox="0 0 919.1875 263" style=""><style></style><style>#mermaidChart30 {
    color: rgb(224, 226, 230);
    font: normal normal normal normal 12.800000190734863px/12.800000190734863px Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, 黑体, "Heiti SC", 黑体-简, "Microsoft YaHei", 微软雅黑, monospace;
  }</style><g transform="translate(32, 32)"><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M40,99.5L78,99.5L116,99.5" marker-end="url(#arrowhead905)" style="fill:none"></path><defs><marker id="arrowhead905" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M169.828125,99.5L220.828125,99.5L272.328125,100" marker-end="url(#arrowhead906)" style="fill:none"></path><defs><marker id="arrowhead906" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M300.4724548969072,92.14432989690722L371.828125,36L482.6796875,36" marker-end="url(#arrowhead907)" style="fill:none"></path><defs><marker id="arrowhead907" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M536.5078125,36L647.359375,36L711.359375,58.350777691844975" marker-end="url(#arrowhead908)" style="fill:none"></path><defs><marker id="arrowhead908" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M308.328125,100L371.828125,99.5L509.59375,99.5L647.359375,99.5L711.359375,77.14922230815502" marker-end="url(#arrowhead909)" style="fill:none;stroke-width:2px;stroke-dasharray:3;"></path><defs><marker id="arrowhead909" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M765.1875,67.75L790.1875,67.75L818.6948762007154,101.14435497798092" marker-end="url(#arrowhead910)" style="fill:none"></path><defs><marker id="arrowhead910" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M300.4724548969072,107.85567010309278L371.828125,163L509.59375,163L647.359375,163L711.359375,163" marker-end="url(#arrowhead911)" style="fill:none;stroke-width:2px;stroke-dasharray:3;"></path><defs><marker id="arrowhead911" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M765.1875,163L790.1875,163L819.766231301779,117.15296648224245" marker-end="url(#arrowhead912)" style="fill:none"></path><defs><marker id="arrowhead912" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(78,99.5)" style="opacity: 1;"><g transform="translate(-13,-12.5)" class="label"><foreignObject width="26" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">初始</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(220.828125,99.5)" style="opacity: 1;"><g transform="translate(-26,-12.5)" class="label"><foreignObject width="52" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">复杂变更</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(371.828125,36)" style="opacity: 1;"><g transform="translate(-39,-12.5)" class="label"><foreignObject width="78" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">变更条件说明</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(647.359375,36)" style="opacity: 1;"><g transform="translate(-39,-12.5)" class="label"><foreignObject width="78" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">变更条件说明</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(509.59375,99.5)" style="opacity: 1;"><g transform="translate(-73.765625,-12.5)" class="label"><foreignObject width="147.53125" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">非正常/次要变更条件说明</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(509.59375,163)" style="opacity: 1;"><g transform="translate(-73.765625,-12.5)" class="label"><foreignObject width="147.53125" height="25"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">非正常/次要变更条件说明</span></div></foreignObject></g></g><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node" id="INIT" transform="translate(30,99.5)" style="opacity: 1;"><circle x="-10" y="-10" r="10"></circle><g class="label" transform="translate(0,0)"><g transform="translate(0,0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"></div></foreignObject></g></g></g><g class="node" id="A" transform="translate(142.9140625,99.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-26.9140625" y="-16" width="53.828125" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-16.9140625,-6)"><foreignObject width="33.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">状态A</div></foreignObject></g></g></g><g class="node" id="trans" transform="translate(289.828125,99.5)" style="opacity: 1;"><polygon points="18,0 36,-18 18,-36 0,-18" rx="5" ry="5" transform="translate(-18,18)"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(0,0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"></div></foreignObject></g></g></g><g class="node" id="B" transform="translate(509.59375,36)" style="opacity: 1;"><rect rx="0" ry="0" x="-26.9140625" y="-16" width="53.828125" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-16.9140625,-6)"><foreignObject width="33.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">状态B</div></foreignObject></g></g></g><g class="node" id="C" transform="translate(738.2734375,67.75)" style="opacity: 1;"><rect rx="0" ry="0" x="-26.9140625" y="-16" width="53.828125" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-16.9140625,-6)"><foreignObject width="33.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">状态C</div></foreignObject></g></g></g><g class="node" id="FINAL" transform="translate(825.1875,108.75)" style="opacity: 1;"><circle x="-10" y="-10" r="10"></circle><g class="label" transform="translate(0,0)"><g transform="translate(0,0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"></div></foreignObject></g></g></g><g class="node" id="D" transform="translate(738.2734375,163)" style="opacity: 1;"><rect rx="0" ry="0" x="-26.9140625" y="-16" width="53.828125" height="32"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-16.9140625,-6)"><foreignObject width="33.828125" height="12"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">状态D</div></foreignObject></g></g></g></g></g></g></svg></div><h6><a name="mermaid－时序图" class="md-header-anchor"></a><span>mermaid－时序图</span></h6><div class="md-diagram-panel"><svg id="mermaidChart31" width="866" xmlns="http://www.w3.org/2000/svg" height="680.4375" viewBox="-8 -8 866 680.4375" style="height: 720.4375px;"><style></style><style>#mermaidChart31 {
    color: rgb(224, 226, 230);
    font: normal normal normal normal 12.800000190734863px/12.800000190734863px Menlo, Consolas, "Courier New", "Noto Sans CJK SC", SimHei, 黑体, "Heiti SC", 黑体-简, "Microsoft YaHei", 微软雅黑, monospace;
  }</style><g></g><g><line id="actor28" x1="75" y1="5" x2="75" y2="671.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="75" dy="0">@人物角色</tspan></text></g><g><line id="actor29" x1="275" y1="5" x2="275" y2="671.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="275" dy="0">标准系统角色</tspan></text></g><g><line id="actor30" x1="475" y1="5" x2="475" y2="671.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="475" dy="0">=重要系统角色=</tspan></text></g><g><line id="actor31" x1="675" y1="5" x2="675" y2="671.4375" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="600" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="675" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="675" dy="0">-外部系统角色-</tspan></text></g><defs><marker id="arrowhead" refX="5" refY="2" markerWidth="6" markerHeight="4" orient="auto"><path d="M 0,0 V 4 L6,2 Z"></path></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="16" refY="4"><path fill="black" stroke="#000000" stroke-width="1px" d="M 9,2 V 6 L16,4 Z" style="stroke-dasharray: 0px, 0px;"></path><path fill="none" stroke="#000000" stroke-width="1px" d="M 0,1 L 6,7 M 6,1 L 0,7" style="stroke-dasharray: 0px, 0px;"></path></marker></defs><g><text x="175" y="93" class="messageText" style="text-anchor: middle;">同步发送消息1</text><line x1="75" y1="100" x2="275" y2="100" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="128" class="messageText" style="text-anchor: middle;">同步发送消息1</text><line x1="275" y1="135" x2="475" y2="135" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="163" class="messageText" style="text-anchor: middle;">异步发送消息2</text><line x1="275" y1="170" x2="475" y2="170" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#crosshead)" style="fill: none;"></line></g><g><rect x="500" y="178" fill="#EDF2AE" stroke="#666" width="150" height="57.375" rx="0" ry="0" class="note"></rect><text x="496" y="202" fill="black" class="noteText"><tspan x="516" fill="black">显示在外部系统</tspan></text><text x="496" y="220.6875" fill="black" class="noteText"><tspan x="516" fill="black">左侧备注说明</tspan></text></g><g><rect x="700" y="243.375" fill="#EDF2AE" stroke="#666" width="150" height="57.375" rx="0" ry="0" class="note"></rect><text x="696" y="267.375" fill="black" class="noteText"><tspan x="716" fill="black">显示在外部系统</tspan></text><text x="696" y="286.0625" fill="black" class="noteText"><tspan x="716" fill="black">右侧备注说明</tspan></text></g><g><rect x="250" y="308.75" fill="#EDF2AE" stroke="#666" width="250" height="38.6875" rx="0" ry="0" class="note"></rect><text x="246" y="332.75" fill="black" class="noteText"><tspan x="266" fill="black">跨对象备注说明</tspan></text></g><g><text x="475" y="396.4375" class="messageText" style="text-anchor: middle;">发送消息A</text><line x1="275" y1="403.4375" x2="675" y2="403.4375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="452.4375" class="messageText" style="text-anchor: middle;">同步返回消息A1</text><line x1="475" y1="459.4375" x2="275" y2="459.4375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="503.4375" class="messageText" style="text-anchor: middle;">异步返回消息A2</text><line x1="475" y1="510.4375" x2="275" y2="510.4375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#crosshead)" style="fill: none;"></line></g><g><line x1="267" y1="411.4375" x2="483" y2="411.4375" class="loopLine"></line><line x1="483" y1="411.4375" x2="483" y2="518.4375" class="loopLine"></line><line x1="267" y1="518.4375" x2="483" y2="518.4375" class="loopLine"></line><line x1="267" y1="411.4375" x2="267" y2="518.4375" class="loopLine"></line><line x1="267" y1="467.4375" x2="483" y2="467.4375" class="loopLine" style="stroke-dasharray: 3px, 3px;"></line><polygon points="267,411.4375 317,411.4375 317,424.4375 308.6,431.4375 267,431.4375" class="labelBox"></polygon><text x="274.5" y="426.4375" fill="black" class="labelText"><tspan x="274.5" fill="black">alt</tspan></text><text x="375" y="423.4375" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="375" fill="black">[ 情景1 ]</tspan></text><text x="375" y="479.4375" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="375" fill="black">[ 情景2 ]</tspan></text></g><g><text x="575" y="567.4375" class="messageText" style="text-anchor: middle;">发送消息X</text><line x1="675" y1="574.4375" x2="475" y2="574.4375" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><line x1="467" y1="526.4375" x2="683" y2="526.4375" class="loopLine"></line><line x1="683" y1="526.4375" x2="683" y2="582.4375" class="loopLine"></line><line x1="467" y1="582.4375" x2="683" y2="582.4375" class="loopLine"></line><line x1="467" y1="526.4375" x2="467" y2="582.4375" class="loopLine"></line><polygon points="467,526.4375 517,526.4375 517,539.4375 508.6,546.4375 467,546.4375" class="labelBox"></polygon><text x="474.5" y="541.4375" fill="black" class="labelText"><tspan x="474.5" fill="black">opt</tspan></text><text x="575" y="538.4375" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="575" fill="black">[ 可选 ]</tspan></text></g><g><line x1="259" y1="355.4375" x2="691" y2="355.4375" class="loopLine"></line><line x1="691" y1="355.4375" x2="691" y2="590.4375" class="loopLine"></line><line x1="259" y1="590.4375" x2="691" y2="590.4375" class="loopLine"></line><line x1="259" y1="355.4375" x2="259" y2="590.4375" class="loopLine"></line><polygon points="259,355.4375 309,355.4375 309,368.4375 300.6,375.4375 259,375.4375" class="labelBox"></polygon><text x="266.5" y="370.4375" fill="black" class="labelText"><tspan x="266.5" fill="black">loop</tspan></text><text x="475" y="367.4375" fill="black" class="loopText" style="text-anchor: middle;"><tspan x="475" fill="black">[ 循环组 ]</tspan></text></g><g><rect x="0" y="606.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="638.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="75" dy="0">@人物角色</tspan></text></g><g><rect x="200" y="606.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="638.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="275" dy="0">标准系统角色</tspan></text></g><g><rect x="400" y="606.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="638.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="475" dy="0">=重要系统角色=</tspan></text></g><g><rect x="600" y="606.4375" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="675" y="638.9375" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="675" dy="0">-外部系统角色-</tspan></text></g></svg></div><p><code>- 注意 -</code><span>因 Typora 的原因，部分特性暂不提供在编辑时进行实时预览，须导出 HTML 并加入插件代码后才能生效。</span></p><h3><a name="彩虹标签" class="md-header-anchor"></a><span>彩虹标签</span></h3><p><span>对于 Markdown 的行内代码标记</span><code>`</code><span> ，通过特定的</span><strong><span>扩展标识</span></strong><span>，来用不同的样式渲染指定的代码标签实现彩虹标签效果。</span></p><p><code>- 注意 -</code><span>因 Typora 的原因，暂不提供在编辑时进行实时预览，样式效果须导出 HTML 并加入插件代码后才能生效。</span></p><h4><a name="单标签风格" class="md-header-anchor"></a><span>单标签风格</span></h4><ul><li><p><span>通过在行内代码内容前增加</span><strong><span>扩展标识</span></strong><span>的内容来标记；</span></p></li><li><p><span>可用于文档中例如修订记录说明、界面元素（按钮、标签）说明、突出标记等，应用举例如下：</span></p><ul><li><code>+ 新增 +</code><span>本次修订新增XXX功能</span></li><li><code>* 优化 *</code><span>本次修订删除XXX功能</span></li><li><span>用户点击</span><code># 立即购买 #</code><span>后进入XXX页面</span></li><li><code>- 注意 -</code><span>有关的注意事项说明</span></li></ul></li><li><p><span>详细规范如下（文本内容前后须加空格）：</span></p><figure><table><thead><tr><th style='text-align:center;' ><span>扩展标识示例</span></th><th style='text-align:center;' ><span>渲染效果</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><code>`= 文本内容 =`</code></td><td style='text-align:center;' ><code>= 文本内容 =</code></td></tr><tr><td style='text-align:center;' ><code>`+ 文本内容 +`</code></td><td style='text-align:center;' ><code>+ 文本内容 +</code></td></tr><tr><td style='text-align:center;' ><code>`* 文本内容 *`</code></td><td style='text-align:center;' ><code>* 文本内容 *</code></td></tr><tr><td style='text-align:center;' ><code>`- 文本内容 -`</code></td><td style='text-align:center;' ><code>- 文本内容 -</code></td></tr><tr><td style='text-align:center;' ><code>`! 文本内容 !`</code></td><td style='text-align:center;' ><code>! 文本内容 !</code></td></tr><tr><td style='text-align:center;' ><code>`# 文本内容 #`</code></td><td style='text-align:center;' ><code># 文本内容 #</code></td></tr></tbody></table></figure></li></ul><h4><a name="双标签风格-n439" class="md-header-anchor"></a><span>双标签风格</span></h4><ul><li><p><span>目前支持药丸式的两段结构，可用于例如版本号说明、变量说明等，例如：</span></p><ul><li><code>= 版本号丨V1.0.2 =</code></li><li><code>!! X取值丨1234 !!</code></li><li><code>- 优先级丨高 -</code></li></ul></li><li><p><span>可支持多种样式，举例如下：</span></p><figure><table><thead><tr><th style='text-align:center;' ><span>写法示例</span></th><th><span>渲染效果</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><code>`= 样式类型丨样式1 =`</code></td><td><code>= 样式类型丨样式1 =</code></td></tr><tr><td style='text-align:center;' ><code>`+ 样式类型丨样式2 +`</code></td><td><code>+ 样式类型丨样式2 +</code></td></tr><tr><td style='text-align:center;' ><code>`* 样式类型丨样式3 *`</code></td><td><code>* 样式类型丨样式3 *</code></td></tr><tr><td style='text-align:center;' ><code>`- 样式类型丨样式4 -`</code></td><td><code>- 样式类型丨样式4 -</code></td></tr><tr><td style='text-align:center;' ><code>`! 样式类型丨样式5 !`</code></td><td><code>! 样式类型丨样式5 !</code></td></tr><tr><td style='text-align:center;' ><code>`# 样式类型丨样式6 #`</code></td><td><code># 样式类型丨样式6 #</code></td></tr></tbody></table></figure></li><li><p><span>旧语法，举例如下：</span></p><figure><table><thead><tr><th style='text-align:center;' ><span>写法示例</span></th><th style='text-align:center;' ><span>渲染效果</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><code>`样式类型丨样式1`</code></td><td style='text-align:center;' ><code>样式类型丨样式1</code></td></tr><tr><td style='text-align:center;' ><code>`样式类型丨丨样式2`</code></td><td style='text-align:center;' ><code>样式类型丨丨样式2</code></td></tr><tr><td style='text-align:center;' ><code>`样式类型丨丨丨样式3`</code></td><td style='text-align:center;' ><code>样式类型丨丨丨样式3</code></td></tr><tr><td style='text-align:center;' ><code>`样式类型丨丨丨丨样式4`</code></td><td style='text-align:center;' ><code>样式类型丨丨丨丨样式4</code></td></tr><tr><td style='text-align:center;' ><code>`样式类型丨丨丨丨丨样式5`</code></td><td style='text-align:center;' ><code>样式类型丨丨丨丨丨样式5</code></td></tr><tr><td style='text-align:center;' ><code>`样式类型丨丨丨丨丨丨样式6`</code></td><td style='text-align:center;' ><code>样式类型丨丨丨丨丨丨样式6</code></td></tr></tbody></table></figure></li></ul><p><code>+ 提示 +</code><span>其中的竖线符号可用英文半角竖线符号并前后加空格</span><code>&lt;空格&gt;|&lt;空格&gt;</code><span>，或中文笔划（竖）</span><code>丨</code><span>或全角竖线符号</span><code>｜</code><span>。</span></p><h4><a name="多行代码" class="md-header-anchor"></a><span>多行代码</span></h4><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="javascript"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">function</span> <span class="cm-def">funName</span>() {</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">var</span> <span class="cm-def">a</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">if</span> (<span class="cm-variable-2">a</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>)</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">console</span>.<span class="cm-property">log</span>(<span class="cm-string">"Hello World!"</span>);</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 130px;"></div><div class="CodeMirror-gutters" style="display: none; height: 130px;"></div></div></div></pre><h3><a name="更实用的任务列表" class="md-header-anchor"></a><span>更实用的任务列表</span></h3><ul><li><p><span>在任务列表前保留原始有序/无序列表信息；</span></p></li><li><p><span>勾选按钮样式为正常样式，同时保持为不可点击；</span></p></li><li class='md-task-list-item task-list-item task-list-not-done' ><input type='checkbox' disabled='disabled' /><p><span>示例：这是一级样式</span></p><ul><li class='md-task-list-item task-list-item task-list-not-done' ><input type='checkbox' disabled='disabled' /><p><span>这是二级样式</span></p></li><li class='md-task-list-item task-list-item task-list-done' ><input type='checkbox' disabled='disabled' checked/><p><span>这是已选中的二级样式</span></p></li></ul></li></ul><h3><a name="更美观的公式" class="md-header-anchor"></a><span>更美观的公式</span></h3><h4><a name="行内公式" class="md-header-anchor"></a><span>行内公式</span></h4><p><span class="MathJax_SVG" tabindex="-1" style="font-size: 100%; display: inline-block;"><svg xmlns:xlink="http://www.w3.org/1999/xlink" width="19.4ex" height="2.443ex" viewBox="0 -788 8352.6 1052" role="img" focusable="false" style="vertical-align: -0.613ex;"><defs><path stroke-width="0" id="E4-MJMAIN-6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z"></path><path stroke-width="0" id="E4-MJMAIN-69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z"></path><path stroke-width="0" id="E4-MJMAIN-6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z"></path><path stroke-width="0" id="E4-MJMATHI-78" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path><path stroke-width="0" id="E4-MJMAIN-2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path><path stroke-width="0" id="E4-MJMAIN-221E" d="M55 217Q55 305 111 373T254 442Q342 442 419 381Q457 350 493 303L507 284L514 294Q618 442 747 442Q833 442 888 374T944 214Q944 128 889 59T743 -11Q657 -11 580 50Q542 81 506 128L492 147L485 137Q381 -11 252 -11Q166 -11 111 57T55 217ZM907 217Q907 285 869 341T761 397Q740 397 720 392T682 378T648 359T619 335T594 310T574 285T559 263T548 246L543 238L574 198Q605 158 622 138T664 94T714 61T765 51Q827 51 867 100T907 217ZM92 214Q92 145 131 89T239 33Q357 33 456 193L425 233Q364 312 334 337Q285 380 233 380Q171 380 132 331T92 214Z"></path><path stroke-width="0" id="E4-MJMAIN-65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z"></path><path stroke-width="0" id="E4-MJMAIN-78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z"></path><path stroke-width="0" id="E4-MJMAIN-70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z"></path><path stroke-width="0" id="E4-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path><path stroke-width="0" id="E4-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path><path stroke-width="0" id="E4-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><use xlink:href="#E4-MJMAIN-6C"></use><use xlink:href="#E4-MJMAIN-69" x="278" y="0"></use><use xlink:href="#E4-MJMAIN-6D" x="556" y="0"></use><g transform="translate(1389,-150)"><use transform="scale(0.707)" xlink:href="#E4-MJMATHI-78" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E4-MJMAIN-2192" x="572" y="0"></use><use transform="scale(0.707)" xlink:href="#E4-MJMAIN-221E" x="1572" y="0"></use></g><g transform="translate(3474,0)"><use xlink:href="#E4-MJMAIN-65"></use><use xlink:href="#E4-MJMAIN-78" x="444" y="0"></use><use xlink:href="#E4-MJMAIN-70" x="972" y="0"></use></g><g transform="translate(5169,0)"><use xlink:href="#E4-MJMAIN-2212" x="0" y="0"></use><use xlink:href="#E4-MJMATHI-78" x="778" y="0"></use></g><use xlink:href="#E4-MJMAIN-3D" x="6796" y="0"></use><use xlink:href="#E4-MJMAIN-30" x="7852" y="0"></use></g></svg></span><script type="math/tex">\lim_{x \to \infty} \exp{-x}=0</script></p><h4><a name="多行公式" class="md-header-anchor"></a><span>多行公式</span></h4><div contenteditable="false" spellcheck="false" class="mathjax-block md-end-block md-math-block md-rawblock" id="mathjax-n518" cid="n518" mdtype="math_block">
			
		<div class="md-rawblock-container md-math-container" tabindex="-1"><div class="MathJax_SVG_Display" style="text-align: center;"><span class="MathJax_SVG" id="MathJax-Element-2-Frame" tabindex="-1" style="font-size: 100%; display: inline-block;"><svg xmlns:xlink="http://www.w3.org/1999/xlink" width="26.356ex" height="10.841ex" viewBox="0 -2569.6 11347.6 4667.6" role="img" focusable="false" style="vertical-align: -4.873ex; max-width: 100%;"><defs><path stroke-width="0" id="E2-MJMAINB-56" d="M592 686H604Q615 685 631 685T666 684T700 684T724 683Q829 683 835 686H843V624H744L611 315Q584 254 546 165Q492 40 482 19T461 -6L460 -7H409Q398 -4 391 9Q385 20 257 315L124 624H25V686H36Q57 683 190 683Q340 683 364 686H377V624H289L384 403L480 185L492 212Q504 240 529 298T575 405L670 624H582V686H592Z"></path><path stroke-width="0" id="E2-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path stroke-width="0" id="E2-MJMAIN-D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path><path stroke-width="0" id="E2-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path stroke-width="0" id="E2-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path><path stroke-width="0" id="E2-MJMAIN-7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path><path stroke-width="0" id="E2-MJMAINB-69" d="M72 610Q72 649 98 672T159 695Q193 693 217 670T241 610Q241 572 217 549T157 525Q120 525 96 548T72 610ZM46 442L136 446L226 450H232V62H294V0H286Q271 3 171 3Q67 3 49 0H40V62H109V209Q109 358 108 362Q103 380 55 380H43V442H46Z"></path><path stroke-width="0" id="E2-MJMAINB-6A" d="M104 610Q104 649 130 672T191 695Q225 693 249 670T273 610Q273 572 249 549T189 525Q152 525 128 548T104 610ZM78 442L173 446L268 450H274V196Q274 -5 274 -37T269 -83Q256 -132 201 -166T71 -200Q10 -200 -30 -173T-71 -102Q-71 -70 -51 -51T-1 -31Q27 -31 48 -49T69 -100Q69 -121 53 -147H56Q66 -149 77 -149H80Q90 -149 100 -146T127 -125T149 -73Q151 -55 151 149V362Q150 364 148 366T145 370T142 373T138 375T133 377T124 378T113 379T97 380H75V442H78Z"></path><path stroke-width="0" id="E2-MJMAINB-6B" d="M32 686L123 690Q214 694 215 694H221V255L377 382H346V444H355Q370 441 476 441Q544 441 556 444H562V382H476L347 277L515 62H587V0H579Q564 3 476 3Q370 3 352 0H343V62H358L373 63L260 206L237 189L216 172V62H285V0H277Q259 3 157 3Q46 3 37 0H29V62H98V332Q98 387 98 453T99 534Q99 593 97 605T83 620Q69 624 42 624H29V686H32Z"></path><path stroke-width="0" id="E2-MJMAIN-2202" d="M202 508Q179 508 169 520T158 547Q158 557 164 577T185 624T230 675T301 710L333 715H345Q378 715 384 714Q447 703 489 661T549 568T566 457Q566 362 519 240T402 53Q321 -22 223 -22Q123 -22 73 56Q42 102 42 148V159Q42 276 129 370T322 465Q383 465 414 434T455 367L458 378Q478 461 478 515Q478 603 437 639T344 676Q266 676 223 612Q264 606 264 572Q264 547 246 528T202 508ZM430 306Q430 372 401 400T333 428Q270 428 222 382Q197 354 183 323T150 221Q132 149 132 116Q132 21 232 21Q244 21 250 22Q327 35 374 112Q389 137 409 196T430 306Z"></path><path stroke-width="0" id="E2-MJMATHI-58" d="M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"></path><path stroke-width="0" id="E2-MJMATHI-75" d="M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path><path stroke-width="0" id="E2-MJMATHI-59" d="M66 637Q54 637 49 637T39 638T32 641T30 647T33 664T42 682Q44 683 56 683Q104 680 165 680Q288 680 306 683H316Q322 677 322 674T320 656Q316 643 310 637H298Q242 637 242 624Q242 619 292 477T343 333L346 336Q350 340 358 349T379 373T411 410T454 461Q546 568 561 587T577 618Q577 634 545 637Q528 637 528 647Q528 649 530 661Q533 676 535 679T549 683Q551 683 578 682T657 680Q684 680 713 681T746 682Q763 682 763 673Q763 669 760 657T755 643Q753 637 734 637Q662 632 617 587Q608 578 477 424L348 273L322 169Q295 62 295 57Q295 46 363 46Q379 46 384 45T390 35Q390 33 388 23Q384 6 382 4T366 1Q361 1 324 1T232 2Q170 2 138 2T102 1Q84 1 84 9Q84 14 87 24Q88 27 89 30T90 35T91 39T93 42T96 44T101 45T107 45T116 46T129 46Q168 47 180 50T198 63Q201 68 227 171L252 274L129 623Q128 624 127 625T125 627T122 629T118 631T113 633T105 634T96 635T83 636T66 637Z"></path><path stroke-width="0" id="E2-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path stroke-width="0" id="E2-MJMATHI-76" d="M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z"></path><path stroke-width="0" id="E2-MJMAIN-2223" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></defs><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><use xlink:href="#E2-MJMAINB-56" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-31" x="1228" y="-213"></use><use xlink:href="#E2-MJMAIN-D7" x="1544" y="0"></use><g transform="translate(2544,0)"><use xlink:href="#E2-MJMAINB-56" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-32" x="1228" y="-213"></use></g><use xlink:href="#E2-MJMAIN-3D" x="4145" y="0"></use><g transform="translate(5201,0)"><g transform="translate(0,2508)"><use xlink:href="#E2-MJMAIN-2223" x="0" y="-750"></use><g transform="translate(0,-2915.630179772682) scale(1,2.6221735730302425)"><use xlink:href="#E2-MJMAIN-2223"></use></g><use xlink:href="#E2-MJMAIN-2223" x="0" y="-4269"></use></g><g transform="translate(445,0)"><g transform="translate(-15,0)"><use xlink:href="#E2-MJMAINB-69" x="522" y="1708"></use><g transform="translate(0,179)"><g transform="translate(120,0)"><rect stroke="none" width="1123" height="60" x="0" y="220"></rect><g transform="translate(60,423)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-58" x="567" y="0"></use></g><g transform="translate(158,-414)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-75" x="567" y="0"></use></g></g></g><g transform="translate(0,-1580)"><g transform="translate(120,0)"><rect stroke="none" width="1123" height="60" x="0" y="220"></rect><g transform="translate(60,423)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-58" x="567" y="0"></use></g><g transform="translate(189,-414)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-76" x="567" y="0"></use></g></g></g></g><g transform="translate(2349,0)"><use xlink:href="#E2-MJMAINB-6A" x="474" y="1708"></use><g transform="translate(0,179)"><g transform="translate(120,0)"><rect stroke="none" width="1060" height="60" x="0" y="220"></rect><g transform="translate(60,423)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-59" x="567" y="0"></use></g><g transform="translate(127,-414)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-75" x="567" y="0"></use></g></g></g><g transform="translate(0,-1580)"><g transform="translate(120,0)"><rect stroke="none" width="1060" height="60" x="0" y="220"></rect><g transform="translate(60,423)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-59" x="567" y="0"></use></g><g transform="translate(158,-414)"><use transform="scale(0.707)" xlink:href="#E2-MJMAIN-2202" x="0" y="0"></use><use transform="scale(0.707)" xlink:href="#E2-MJMATHI-76" x="567" y="0"></use></g></g></g></g><g transform="translate(4649,0)"><use xlink:href="#E2-MJMAINB-6B" x="0" y="1708"></use><use xlink:href="#E2-MJMAIN-30" x="53" y="179"></use><use xlink:href="#E2-MJMAIN-30" x="53" y="-1580"></use></g></g><g transform="translate(5868,2508)"><use xlink:href="#E2-MJMAIN-2223" x="0" y="-750"></use><g transform="translate(0,-2915.630179772682) scale(1,2.6221735730302425)"><use xlink:href="#E2-MJMAIN-2223"></use></g><use xlink:href="#E2-MJMAIN-2223" x="0" y="-4269"></use></g></g></g></svg></span></div><script type="math/tex; mode=display" id="MathJax-Element-2">\mathbf{V}_1 \times \mathbf{V}_2 =  \begin{vmatrix} 
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} &  \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} &  \frac{\partial Y}{\partial v} & 0 \\
\end{vmatrix}</script></div></div><h3><a name="打印样式" class="md-header-anchor"></a><span>打印样式</span></h3><ul><li><span>打印输出时自动优化页面显示样式，以适应用打印输出的应用场景。</span></li></ul><h2><a name="功能增强-n523" class="md-header-anchor"></a><span>功能增强</span></h2><h3><a name="文档导航plus" class="md-header-anchor"></a><span>文档导航Plus</span></h3><h4><a name="大纲导航" class="md-header-anchor"></a><span>大纲导航</span></h4><ul><li><span>支持页面左侧显示目录大纲，并能根据页面位置自动高亮当前章节；</span></li><li><span>目录大纲默认显示前三级，可自行修改样式文件进行调整</span></li></ul><p><code>- 注意 -</code><span>编写 Markdown 文档时，须在封面后添加标签</span><code>[TOC]</code><span>。</span></p><h4><a name="逐章导航" class="md-header-anchor"></a><span>逐章导航</span></h4><ul><li><span>支持在页面顶部显示当前章节标题内容（除第6级标题）；</span></li><li><span>根据页面位置自动识别当前章节，正如你现在看到的那样；</span></li><li><span>显示</span><kbd><span>＜ 章节名称</span></kbd><span>、</span><kbd><span>章节名称 ＞</span></kbd><span>的标题，点击进行章节间跳转；</span></li></ul><p><code>- 注意 -</code><span>编写 Markdown 文档时，须在封面后添加标签</span><code>[TOC]</code><span>。</span></p><h3><a name="文档评审演示辅助" class="md-header-anchor"></a><span>文档评审/演示辅助</span></h3><h4><a name="聚光灯" class="md-header-anchor"></a><span>聚光灯</span></h4><ul><li><span>在进行文档评审或演示时，可以通过激活聚光灯来让观众聚焦于文档的特定区域和内容；</span></li><li><span>通过双击文档任意位置进行</span><strong><span>激活</span></strong><span>或</span><strong><span>关闭</span></strong><span>聚光灯。</span></li></ul><h4><a name="内容块聚焦-n548" class="md-header-anchor"></a><span>内容块聚焦</span></h4><ul><li><p><span>在进行文档评审或演示时，可以通过激活内容块聚焦方式，对单个内容进行识别和聚焦；</span></p></li><li><p><span>可通过鼠标点击文档任意内容激活，也支持快捷键操作（致敬 VI / VIM）：</span></p><figure><table><thead><tr><th style='text-align:center;' ><strong><span>热键/快捷键</span></strong></th><th><span>功能</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><kbd><span>J</span></kbd></td><td><span>下一个内容块</span></td></tr><tr><td style='text-align:center;' ><kbd><span>K</span></kbd></td><td><span>上一个内容块</span></td></tr><tr><td style='text-align:center;' ><kbd><span>H</span></kbd></td><td><span>往前十个内容块</span></td></tr><tr><td style='text-align:center;' ><kbd><span>L</span></kbd></td><td><span>往后十个内容块</span></td></tr></tbody></table></figure></li></ul><h3><a name="文档插图浏览器" class="md-header-anchor"></a><span>文档插图浏览器</span></h3><ul><li><p><span>支持图片、图表格式：</span></p><ul><li><span>浏览器支持的所有图片（jpg / png / gif / bmp / ..）</span></li><li><span>脚本化图表（mermaid</span><sup class='md-footnote'><a href='#dfref-footnote-3' name='ref-footnote-3'>3</a></sup><span>，从V9开始移除对 flowchart.js</span><sup class='md-footnote'><a href='#dfref-footnote-4' name='ref-footnote-4'>4</a></sup><span>、JS Sequence Diagrams</span><sup class='md-footnote'><a href='#dfref-footnote-5' name='ref-footnote-5'>5</a></sup><span>的支持）</span></li></ul></li><li><p><span>点击任意图片、图表打开插图浏览器进行查看；</span></p></li><li><p><span>支持在新标签打开图片、图表；</span></p></li><li><p><span>支持按前一张、后一张方式浏览文档中的所有插图；</span></p></li><li><p><span>对于缺失的图片以默认图片进行替换显示；</span></p></li><li><p><span>点击插图能直接跳转到文档中对应的位置，支持通过热键/快捷键</span><kbd><span>esc</span></kbd><span>关闭插图浏览器；</span></p></li></ul><h6><a name="这是普通的图片示例" class="md-header-anchor"></a><span>这是普通的图片示例</span></h6><p><img src="https://raw.githubusercontent.com/MadMaxChow/uploads/master/pic/normal-pic.jpg" referrerpolicy="no-referrer" alt="普通的图片"></p><h3><a name="自动识别缺失的图片" class="md-header-anchor"></a><span>自动识别缺失的图片</span></h3><ul><li><span>识别出无法加载的图片，并替换为图片缺失提示图，示例如下：</span></li></ul><p><img src="vlook-lost-image.jpg?invert=in-dark" referrerpolicy="no-referrer" alt="缺失的图片"></p><h3><a name="支持折叠引用内容" class="md-header-anchor"></a><span>支持折叠引用内容</span></h3><ol start='' ><li><span>对于「引用」，支持动态折叠操作；</span></li><li><span>在编辑时可指定默认的折叠状态（收起 / 展开）。</span></li><li><span>举例如下：</span></li></ol><blockquote><p><span>[+] </span><strong><span>这里是引用的折叠标题</span></strong></p><blockquote><ol start='' ><li><span>标题前加</span><code>[+]&lt;空格&gt;</code><span>或</span><code>[-]&lt;空格&gt;</code><span>；</span></li><li><code>[+]</code><span>指默认为「收起」状态；</span></li><li><code>[-]</code><span>指默认为「展开」状态。</span></li></ol><p><span>[+] </span><strong><span>支持多级引用的折叠</span></strong></p><blockquote><p><span>这里是多级引用折叠的内容</span></p><blockquote><p><span>这是多级引用不提供折叠的内容</span></p></blockquote></blockquote></blockquote><p><span>[-] </span><strong><span>这是默认展开的「引用」</span></strong></p><blockquote><p><span>展示的引用的内容</span></p></blockquote></blockquote><h3><a name="更友好的脚注体验" class="md-header-anchor"></a><span>更友好的脚注体验</span></h3><ul><li><span>默认情况下，查看脚注信息须在文档中来回跳转；</span></li><li><span>增强后的脚注功能可以直接在当前页面位置全屏显示；</span></li><li><span>点击文末的</span><strong><span>脚注编号</span></strong><span>查看脚注信息</span><sup class='md-footnote'><a href='#dfref-footnote-6' name='ref-footnote-6'>6</a></sup></li></ul><h3><a name="切换字体样式-n634" class="md-header-anchor"></a><span>切换字体样式</span></h3><ul><li><p><span>支持</span><strong><span>衬线</span></strong><span>与</span><strong><span>无衬线</span></strong><span>字体风格，可根据个人喜好进行切换；</span></p></li><li><p><span>VLOOK 优先显示开源的</span><strong><span>思源黑体</span></strong><span>和</span><strong><span>思源宋体</span></strong><span>，建议下载安装获得更好的视觉体验；</span></p></li><li><p><span>下载地址：</span></p><ul><li><span>思源黑体 / Noto Sans（</span><a href='https://github.com/googlefonts/noto-cjk/blob/master/NotoSansCJKsc-Regular.otf'><span>常规体</span></a><span>、</span><a href='https://github.com/googlefonts/noto-cjk/blob/master/NotoSansCJKsc-Bold.otf'><span>粗体</span></a><span>）</span></li><li><span>思源宋体 / Noto Serif（</span><a href='https://github.com/googlefonts/noto-cjk/blob/master/NotoSerifCJKsc-Regular.otf'><span>常规体</span></a><span>、</span><a href='https://github.com/googlefonts/noto-cjk/blob/master/NotoSerifCJKsc-Bold.otf'><span>粗体</span></a><span>）</span></li></ul></li></ul><h3><a name="链接管理" class="md-header-anchor"></a><span>链接管理</span></h3><h4><a name="外链强制新标签打开" class="md-header-anchor"></a><span>外链强制新标签打开</span></h4><ul><li><span>为提高文档阅读与交互体验，对于外链（如：http、https、ftp等），自动强制设置为在新标签页中打开。</span></li></ul><h4><a name="内链有效性检查" class="md-header-anchor"></a><span>内链有效性检查</span></h4><h6><a name="无效内链" class="md-header-anchor"></a><span>无效内链</span></h6><ul><li><span>自动检查页面内部链接的正确性；</span></li><li><span>若存在无效的页内链接，则通过弹窗提示。</span></li></ul><h6><a name="重名章节标题" class="md-header-anchor"></a><span>重名章节标题</span></h6><ul><li><span>自动检查文档是否存在重名的标题，以提示作者检查是否会存在页内链接不能跳转到重名的标题位置的可能性；</span></li><li><span>重名章节标题的警告提示信息须启动浏览器的开发者工具或调试工具后，打开其控制台窗口进行查看。</span></li></ul><h3><a name="热键操作" class="md-header-anchor"></a><span>热键操作</span></h3><ol start='' ><li><p><span>全局热键：</span></p><figure><table><thead><tr><th style='text-align:center;' ><span>热键/快捷键</span></th><th><span>功能</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><kbd><span>T</span></kbd></td><td><span>切换文档主题</span></td></tr><tr><td style='text-align:center;' ><kbd><span>O</span></kbd></td><td><span>显示 / 隐藏大纲面板</span></td></tr><tr><td style='text-align:center;' ><kbd><span>A</span></kbd></td><td><span>切换字体样式，详见</span><a href='#切换字体样式'><span>切换字体样式</span></a></td></tr><tr><td style='text-align:center;' ><kbd><span>I</span></kbd></td><td><span>显示 / 隐藏插图浏览器</span></td></tr><tr><td style='text-align:center;' ><kbd><span>P</span></kbd></td><td><span>打印文档</span></td></tr><tr><td style='text-align:center;' ><kbd><span>S</span></kbd></td><td><span>打开 / 关闭聚光灯</span></td></tr><tr><td style='text-align:center;' ><kbd><span>←</span></kbd><span> / </span><kbd><span>&lt;</span></kbd></td><td><span>上一章</span></td></tr><tr><td style='text-align:center;' ><kbd><span>→</span></kbd><span> / </span><kbd><span>&gt;</span></kbd></td><td><span>下一章</span></td></tr><tr><td style='text-align:center;' ><kbd><span>J</span></kbd><kbd><span>K</span></kbd><kbd><span>H</span></kbd><kbd><span>L</span></kbd></td><td><span>内容块操作，详见</span><a href='#内容块聚焦'><span>内容块聚焦</span></a></td></tr><tr><td style='text-align:center;' ><kbd><span>ESC</span></kbd></td><td><span>关闭弹出的界面、聚光灯、内容块聚焦等</span></td></tr></tbody></table></figure></li><li><p><span>插图浏览器热键：</span></p><figure><table><thead><tr><th style='text-align:center;' ><span>热键/快捷键</span></th><th><span>功能</span></th></tr></thead><tbody><tr><td style='text-align:center;' ><kbd><span>←</span></kbd><span> / </span><kbd><span>&lt;</span></kbd></td><td><span>前一张插图</span></td></tr><tr><td style='text-align:center;' ><kbd><span>→</span></kbd><span> / </span><kbd><span>&gt;</span></kbd></td><td><span>后一张插图</span></td></tr></tbody></table></figure></li></ol><h1><a name="如何使用" class="md-header-anchor"></a><span>如何使用</span></h1><h2><a name="打赏" class="md-header-anchor"></a><span>打赏</span></h2><h6><a name="若喜欢-vlook™-的话可以请-max-喝杯咖啡～" class="md-header-anchor"></a><span>若喜欢 VLOOK™ 的话，可以请 Max 喝杯咖啡～</span></h6><p><img src="https://raw.githubusercontent.com/MadMaxChow/uploads/master/pic/donate-wechat.png" referrerpolicy="no-referrer"></p><h2><a name="下载插件" class="md-header-anchor"></a><span>下载插件</span></h2><ul><li><span>访问官方主页下载最新发布版本：</span><a href='https://github.com/MadMaxChow/VLOOK/releases'><span>https://github.com/MadMaxChow/VLOOK/releases</span></a></li><li><span>可基于</span><code>VLOOK\3-demo\VLOOK-Template 文档模板.md</code><span>来创建你自己的文档，</span><code>VLOOK\3-demo</code><span>目录下也有本文档的 Markdown 源文件。</span></li></ul><h2><a name="应用主题" class="md-header-anchor"></a><span>应用主题</span></h2><ul><li><span>将</span><code>released\theme</code><span>下所有CSS文件复制至 Typora 的主题目录（ Typora「偏好设置」中点击「外观 - 打开主题目录」定位到该目录）；</span></li><li><span>进入 Typora 的偏好设置，启用 Markdown 语法扩展下的所有选项（如：公式、上标、下标、高亮、图表等）；</span></li><li><span>重启 Typora ，点击菜单</span><code>主题</code><span>，选择以</span><code>vlook-*</code><span>形式命名的主题，即可启用对应的 VLOOK 主题样式。</span></li></ul><h2><a name="应用插件" class="md-header-anchor"></a><span>应用插件</span></h2><ul><li><p><span>在 Typora 中将 Markdown 文件导出为</span><code>HTML</code><span>文件；</span></p></li><li><p><span>打开文件</span><code>released\VLOOK-TOOLBOX 插件.txt</code><span>，全选所有内容，并复制；</span></p></li><li><p><span>用纯文件编辑器，如：记事本、</span><a href='https://code.visualstudio.com/'><span>Visual Studio Code</span></a><span>，打开该导出的 HTML 文件；</span></p></li><li><p><span>搜索「</span><strong><span>&lt;body </span></strong><span>」，并将复制的内容粘贴到body标签的「</span><strong><span>&gt;</span></strong><span>」之后：</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 4px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;body ...&gt;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">← ← ← ← ← 复制的「VLOOK-TOOLBOX 插件」内容粘贴于此！</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">...</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;/body&gt;</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom-width: 0px; border-bottom-style: solid; border-bottom-color: transparent; top: 104px;"></div><div class="CodeMirror-gutters" style="display: none; height: 104px;"></div></div></div></pre></li><li><p><span>保存，大吉大利。</span></p></li></ul><blockquote><p><span>强烈建议使用 Chrome 或 Firefox 浏览器查看</span></p></blockquote><h1><a name="许可协议-n748" class="md-header-anchor"></a><span>许可协议</span></h1><p><strong><span>MIT许可证</span></strong></p><p><span>版权所有 (c) 2018 MAX°DESIGN | Max Chow</span>
<span>在此授予任何获得此软件和相关文档文件（“软件”）副本的人免费许可，以无限制地处理本软件，包括但不限于使用，复制，修改，合并，发布，分发，再授权和/或出售本软件的副本，并允许本软件的授予人员遵从以下情况：</span>
<span>上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。</span>
<span>本软件按“原样”提供，不提供任何以表达或暗示，包括但不限于销售，适用于特定用途和不侵权的保证。在任何情况下，作者或版权所有人不对因软件或软件的使用或其他事宜产生的任何索赔，损害或其他责任（无论是在合同，侵权或其他方面的诉讼中）负责。</span></p><h6><a name="终了br" class="md-header-anchor"></a><span>终了</span><br></h6><div class='footnotes-area'  ><hr/>
<div class='footnote-line'><span class='md-fn-count'>1</span> <span>Typora 是非常棒的跨平台的 Markdown 编辑器，支持直接预览与编辑，更详细的特性详见</span><a href='https://www.typora.io'><span>官网</span></a><span>。</span><a name='dfref-footnote-1' href='#ref-footnote-1' title='back to document' class='reversefootnote' >↩</a></div>
<div class='footnote-line'><span class='md-fn-count'>2</span> <span>可以根据 VLOOK 源码目录下的 LESS 中文件为样例进行自定义扩展，访问 VLOOK 在 github </span><a href='http://github.com/madmaxchow/vlook'><span>主页</span></a><span>。</span><a name='dfref-footnote-2' href='#ref-footnote-2' title='back to document' class='reversefootnote' >↩</a></div>
<div class='footnote-line'><span class='md-fn-count'>3</span> <span>mermaid 是一个用于画流程图、状态图、时序图、甘特图的库，使用 JS 进行本地渲染，广泛集成于许多 Markdown 编辑器中。详见 </span><a href='https://mermaidjs.github.io'><span>mermaid官网</span></a><span>，或 VLOOK 的示例文档《</span><a href='https://madmaxchow.github.io/VLOOK/chart.html'><span>脚本化图表 for Markdown</span></a><span>》</span><a name='dfref-footnote-3' href='#ref-footnote-3' title='back to document' class='reversefootnote' >↩</a></div>
<div class='footnote-line'><span class='md-fn-count'>4</span> <span>flowchart.js 基于 SVG 的流程图插件，它仅需几行代码即可在 Web 上完成流程图的构建。可以从文字表述中画出简单的 SVG 流程图，也可以画出彩色的图表。详见 </span><a href='http://flowchart.js.org'><span>flowchart.js 官网</span></a><span>，或 VLOOK 的示例文档《</span><a href='https://madmaxchow.github.io/VLOOK/chart.html'><span>脚本化图表 for Markdown</span></a><span>》。</span><a name='dfref-footnote-4' href='#ref-footnote-4' title='back to document' class='reversefootnote' >↩</a></div>
<div class='footnote-line'><span class='md-fn-count'>5</span> <span>JS sequence diagrams 是一个方便建立UML的时序图（序列图or循序图）在线工具，使用简单。详见 </span><a href='https://bramp.github.io/js-sequence-diagrams/'><span>JS Sequence Diagrams</span></a><span> 官网，或 VLOOK 的示例文档《</span><a href='https://madmaxchow.github.io/VLOOK/chart.html'><span>脚本化图表 for Markdown</span></a><span>》。</span><a name='dfref-footnote-5' href='#ref-footnote-5' title='back to document' class='reversefootnote' >↩</a></div>
<div class='footnote-line'><span class='md-fn-count'>6</span> <span>这是增</span><strong><span>强的脚注</span></strong><span>的信息，该增强由 VLOOK 插件提供。</span><a href='#vlook™-是什么'><span>VLOOK™ 是什么？</span></a><a name='dfref-footnote-6' href='#ref-footnote-6' title='back to document' class='reversefootnote' >↩</a></div></div></div>
</body>
</html>